Files
templates/c/ds18b20-ds2480/ports/stm32f4/README.md

3.5 KiB
Raw Blame History

STM32F407 / STM32F4 HAL

Порт UART для ds2480.c. Платформа настраивает тактирование и GPIO, порт формирует BREAK через TX GPIO, восстанавливает UART 9600 8N1 и проверяет ошибки приёма. DMA и обработчики UART-прерываний не нужны. HAL tick должен работать; вызывать из прерывания или при запрещённых прерываниях нельзя.

ds2480 bridge;
ds2480_port io;
ds2480_stm32f4_hal platform = {&huart6, GPIOC, GPIO_PIN_6, GPIO_AF8_USART6};
/* Before this point: enable GPIOC/USART6 clocks, configure PC6/PC7 as AF8. */
if (ds2480_stm32f4_hal_bind(&platform, &io) != DS2480_OK) return;
if (ds2480_init(&bridge, &io, 20) != DS2480_OK) return;

В сборку добавляются ds2480_stm32f4_hal.c, ядро библиотеки, путь к этому каталогу и STM32F4 HAL/CMSIS. UART выделяется только для моста. Порт принимает по одному байту за операцию: ответ сохраняется в DR во время завершения TX, затем читается без сброса RX. FE/NE/ORE/PE означают ошибку обмена даже при RXNE.

Подключение в climate F407VET6

STM32 / питание DS2480B
PC6, USART6_TX TXD, вывод 7 (вход моста)
PC7, USART6_RX RXD, вывод 8 (выход моста)
Общая земля GND, вывод 1
+5 В VDD, вывод 4; VPP, вывод 5; POL, вывод 6
DQ датчиков DS18B20 1-W, вывод 2

DS2480B работает от 5 В. Проверьте согласование логических уровней по электрическим характеристикам конкретной платы/модуля; не считайте питание DS2480B от 3,3 В допустимым. Для внешнего питания DS18B20 подключите VDD; при паразитном питании VDD датчика соединяется с GND. В обоих случаях общий GND.

PC6/PC7 выбраны в climate (AF8). UART1/2 используются Modbus, SDIO использует 4-битную шину PC8..PC12/PD2. Пины для другой платы задаются её приложением.

Неблокирующее питание датчиков

ds2480_power_begin посылает команду датчика с strong pullup на последнем слоте. Приложение возвращается в главный цикл, отсчитывает 750 мс для преобразования либо минимум 10 мс для EEPROM, затем вызывает ds2480_power_end. До завершения импульса остальной обмен возвращает BUSY. При отмене вызывайте power_end, при потере синхронизации — ds2480_init.

Используется в climate_control_f407vet6_f4: ds2480_app.c связывает порт из сабмодуля с существующим каталогом датчиков и диагностикой Modbus.

Источники: STM32F407, таблица alternate functions, DS2480B, выводы и UART.