привет подскажите может есть где примерчик как получать по USART файл и записывать его во Flash (получается я хочу получать файл и прошивать часть АРМа). с USART'ом я работать умею (точнее отправляю текст и получаю его обратно), но никак не могу смекнуть как поступать в случае передачи файла (динамически надо переменную под передачу делать?). и потом еще не могу уразуметь как записывать получаемый файл во Flash пока вот такой набросок по записи: void WriteToFlash(unsigned char data){ HAL_FLASH_Unlock(); HAL_FLASH_Program_IT(FLASH_TYPEERASE_PAGES TYPEERASEDATA_WORD, 0x800A000, 0xffff); HAL_FLASH_Program_IT(TYPEPROGRAMDATA_WORD, &data, ControllerConfig.powerBias); HAL_FLASH_Lock(); }
// ЕСЛИ счетчик получателя обнулился, то данные получены все и if(huart->RxXferCount == 0){ // передаем данные обратно отправителю HAL_UART_Transmit_IT(&huart1, &usartBuf[0], USART_BUFFER_SIZE);
// инициализируем получатель для получения новой порции данных HAL_UART_Receive_IT(huart, &usartBuf[0], USART_BUFFER_SIZE); }
void UartReceive(void){ static uint8_t * pRxBuffPtr; static int UartInit=0; if (!UartInit) { pRxBuffPtr = &usartBuf[0]; // получаем указатель на данные // передаем в получатель указатель на данные и допустимый размер для данных HAL_UART_Receive_IT(&huart1, pRxBuffPtr, USART_BUFFER_SIZE); UartInit = 1; } // проверяем, если у нас адрес на данные изменился, то while (pRxBuffPtr != huart1.pRxBuffPtr) { // инкрементим адрес pRxBuffPtr++; // И ЕСЛИ адрес сохраненный ранее РАВЕН адресу последней ячейки массива, то if (pRxBuffPtr == &usartBuf[0] + USART_BUFFER_SIZE) { // заменяем адрес на начальную ячейку pRxBuffPtr = &usartBuf[0]; } } }
на картинке во вложении розовым - отправленная последовательность на АРМ черным - принятая от АРМа
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения