Теперь у меня есть stm32f4-discovery. Я делаю max232 для uart для подключения stm32f4. И я использую usb-rs232 для подключения max232. Надеюсь, я смогу общаться с stm32f4 и ПК через uart. И я открываю шпатлевку в Linux. Но у меня есть большая проблема с настройкой скорости uart baud-rate. Если я устанавливаю ту же скорость передачи, он не может получить правильное сообщение. Я использую осциллограф. Наконец, я устанавливаю 7680 (stm32f4) и 3200 (шпатлевка). то я могу получить правильное сообщение. Но я понятия не имею, почему он работает с разными скоростями передачи. Может ли кто-нибудь сказать мне, почему? И это мой код, thx https://gitcafe.com/ctc8631/stm32f4-test-uartstm32f4 настройка скорости передачи данных uart?
ответ
Возможно, вы используете авто-бодрет на шпатлевку. Деактивирует автоматическую скорость и повторите попытку. если все еще работает, частота apb1/apb2-bus может быть неправильной. Вы можете отредактировать частоту шины по stm32f4xx_rcc.c
У меня была точно такая же проблема. Я использовал различные библиотеки и включал файлы в свой проект. Большинство из них были новее, чем оригинал, поставленный ST. Это была моя мотивация «модернизировать» их, но это была большая ошибка.
Мое решение/обходной путь был:
Использование TrueSTUDIO. Создайте новое приложение Embedded C. Настройте мастер правильно (это однозначно, но вот видео о нем: http://www.youtube.com/watch?v=mT5bAgpW3jU). Он сгенерирует все необходимые файлы и настроит все хорошо (структура проекта, интерфейс отладки и т. Д.). Добавьте свои собственные источники и измените необходимые, а tadaaaaa USARTx будет управлять желаемой скоростью передачи.
Я предполагаю, что проблема в том, что периферийная тактовая частота была установлена неправильно, и поэтому рабочая скорость не соответствует. Это только мое мнение, что я не могу найти источник проблемы, но если вы используете другую IDE, я советую изменить доски конкретных библиотек обратно к оригиналу.
Возможно, вам необходимо проверить настройки часов. Плата обнаружения имеет кристалл 8 МГц, например, соответствующий конфигурационный файл (библиотеки/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c) в стандартной периферийной библиотеке, по-видимому, настроен для кристалла 25 МГц. Он имеет Эти определения
#define PLL_M 25
#define PLL_N 336
#define PLL_P 2
#define PLL_Q 7
генерировать 168Mhz от 25МГц, тогда как рабочий пример локальных сетей для обнаружения борту найден из сети использует
#define PLL_M 8
#define PLL_N 288
#define PLL_P 2
#define PLL_Q 6
, чтобы получить 144MHz от 8MHz.
Редактировать: Оказалось, что этого недостаточно, поскольку stm32f4xx.h определяет «HSE_VALUE» как 25000000 (25 МГц), если он уже не определен, когда файл включен. Правильно работающий пример, на который я посмотрел, поэтому не определил и переопределил его до 8000000 (8 МГц) в stm32f4xx_conf.h. Но я думаю, что правильная вещь должна была бы определить ее в командной строке компилятора (т. Е. В некотором окне свойств, если вы используете IDE). По крайней мере, это отлично работало в IAR EWARM.
В файле stm32f4xx.h вам нужно исправить
HSE_VALUE from 25000000 to 8000000
Затем в файле system_stm32f4xx.c Установить следующее:
/* PLL_VCO = (HSE_VALUE or HSI_VALUE/PLL_M) * PLL_N */
#define PLL_M 8
#define PLL_N 336
/* SYSCLK = PLL_VCO/PLL_P */
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO/PLLQ */
#define PLL_Q 7
- 1. Установка скорости передачи для UART в LPC1788
- 2. STM32F4 HAL DMA UART TX
- 3. Настройка скорости передачи для микроконтроллера LP17XX
- 4. Расчет скорости передачи данных
- 5. изменение скорости передачи данных при скорости передачи в бодах
- 6. Параметр скорости передачи данных UBoot
- 7. регулировка скорости передачи данных pic24
- 8. Определение скорости передачи данных AVPlayer
- 9. Прерывания вычислений скорости передачи данных
- 10. PIC16F1823 регистры генератора скорости передачи данных не могут быть установлены
- 11. Как управлять дроссельной передачей UART-передачи PIC24H?
- 12. Yii2 Ускоренная оптимизация скорости передачи данных
- 13. Ограничение скорости передачи данных с помощью WebSockets
- 14. Обнаружение скорости передачи данных при использовании jquery
- 15. C/C++ Шифрование: измерение скорости передачи данных
- 16. API-интерфейс ограничения скорости передачи данных
- 17. Flash: Улучшение скорости передачи данных/качества камеры
- 18. О скорости передачи данных в системе H264
- 19. Свойство скорости передачи данных и частоты кадров
- 20. Каковы параметры N и M в генераторе скорости передачи данных?
- 21. Ограничение скорости передачи TCP
- 22. Ftp: ограничение скорости передачи
- 23. OBDII - определение скорости передачи и скорости вращения
- 24. Акселерометр STM32F4
- 25. Изменение скорости передачи данных UARTx для LPC 1768 не работает
- 26. PIC32 Ошибка передачи UART, данные не передаются
- 27. Qt - Настройка пользовательской скорости в бодах
- 28. Простое сравнение данных с использованием двойной скорости передачи данных
- 29. Настройка свойств скорости
- 30. Настройка скорости Linux I2C