Bri*_*Hsu 4 embedded serial-port uart stm32f4discovery
背景
这是我的一些背景知识,这样你的家伙就可以知道我拥有或者没有相关知识.我完全是这种嵌入式系统的新手.我对电子产品一无所知,我是一个纯粹的软件人.
我唯一的嵌入式系统体验是Raspberry Pi,它与STM32F4 Discovery完全不同.
我可以使用Raspberry Pi上的标准Linux C库实现UART读/写编程,该库连接到带有USB转RS232适配器和电压转换器IC的PC.
我的设备和开发环境
我想要实现的目标
我想在STM32F429 Discovery板上实现一个可以向/从PC发送/接收消息的编程.(例如,将字符串发送到PC.当从PC接收到字符串时,点亮板上的LED)
我现在做了什么
现在我已经设置了我的Keil uVision IDE,并且可以编译/运行闪烁LED示例,我也可以编辑该示例以按照我希望的方式控制LED.(例如,按下用户按钮时打开LED,按下按钮时将其关闭)
所以LED部件已经完成了,它是如何使用RS232电缆与STM32F4 Discovery板进行通信的缺失部分.
我的问题
首先,我想知道我是否正确理解了该板的PIN定义.根据该数据表,我应该将DB9上的TX引脚连接到PD2(UART5_RX),将DB9上的RX引脚连接到PC12(UART5_TX),将DB9上的VCC引脚连接到3.3V,将DB9上的GND连接到GND.这个连接是否正确?
是否有关于如何在最新版本的Keil uVision上使用新HAL库的UART的示例代码?我在网上搜索过,但是大多数示例代码或教程都使用了一个函数RCC_AHB1PeriphClockCmd,这个函数似乎不存在于来自Keil uVision的新HAL库中.
更新
我的USB转串口适配器是067b:2303 Prolific Technology, Inc. PL2303 Serial Port一个电平转换器IC.看起来像这样:
当连接到Raspberry Pi时,我遵循了这条指令,因此IC上的VCC/GND连接到Raspberry Pi上的3.3V/GND,我不确定是否需要这样做.
通过"HAL"库,我的意思是这个stm32f4xx_hal_usart.c文件,根据评论中的许可声明,它似乎来自意法半导体.虽然这个文件中有一些指令,但我仍然很难弄清楚如何使用这个驱动程序.举例来说,我不能告诉之间的区别Enable USARTx interface clock和Enable the clock for USART GPIOs,我不知道我怎样才能实现这些功能.因此,如果有一个示例代码,那将是一个很大的帮助,因为我可以将它与这些指令进行比较.
代码很简单,回答了问题,主要是由STM-Cube生成的..ioc文件也可供您修改.
有许多其他外围设备可供使用,但尚未经过测试,包括
USB VCport
Timers set for RC hobby servos, just change pulse width 500-1500
ADC in DMA mode
SPI for flash etc
I2C for port expansion or whatever
Run Code Online (Sandbox Code Playgroud)
我分担了OP花了很多天,几周和几个月的努力让这些东西在新老库上运行的挫折感.最后在2016年,似乎有一些来自ST的亮点,我可以继续为这些伟大的主板做真正的应用程序.
事实上,在执行此任务时,我必须在其正常工作之前重新安装我的多维数据集及其所有库,这可能会导致其他人的痛苦.
我将在这个"模板"上添加LCD和触摸屏来制作一个很棒的小"机器人".
我通常将蓝牙模块连接到其中一个UARTS并通过那里进行调试.
Andy Brown Andy Brown为一些ST提供了一些很棒的C++库.它们似乎基于StdPeripheral库并需要更新,因此我们可以在新(和旧)设备上通过Cube和HAL使用它们.作为一个社区,我们可以更有效地做到这一点 任何想法和接受者?
玩得开心.
Update your Cube and HAL libraries to the latest
Generate a cube project
Setup all your peripherals in the dialogs
Generate code
Compile
Add your application
Test & Debug
Optimise
Release
Run Code Online (Sandbox Code Playgroud)
您只需要注意不同系列上的类似外设有不一致的地方,例如F0上的ADC与F1和F4不同.F3可能具有16位ADC.
除非您想要与UART作斗争,否则建议您使用标准USB电缆实施Virtual Comport演示.让ST成为设备.
获取STCube的副本,查看项目/外围设备目录中的USB和Virtual comport.HAL库是相同的,也有此代码.
在任何Discovery板上工作时,启动一份STM32 Cube(从ST免费),然后在那里创建配置.它向您展示了什么是使用什么,什么是免费的,一个伟大的工具,并将USB设置作为奖励.
然后使用代码生成器为KEIL项目创建一个框架.编译,运行添加您的应用程序代码和:-)
你可能想在这里看看Embitz.org他们有一个很好的IDE,甚至更好的F429iDisco示例或ST AC6 IDE和ST页面更多的例子.这些IDE没有代码大小限制,您将在此设备上使用LCD,触摸等操作.
答案的其余部分
不幸的是,STM必须将此发现的大部分引脚分配给板载LCD,触摸和存储芯片.剩下很少的异步功能 - 他们可能认为USB会好的.
Q1) - 这些通常标记的方式你需要通过将Rx连接到TX来"交叉",反之亦然.
通过连接UART引脚上的"环回"检查代码并检查LED.
Q2) - STM Cube将为您生成一个有效的Keil项目.
这个演示代码将使用Keil项目(MDK-ARM)在stm32cube_fw_f4_v130\STM32Cube_FW_F4_V1.3.0\Projects\STM32F429I-Discovery\Examples\UART中编译和运行.您需要更改为UART5 - 它配置为USART1 PA9(Tx)/ PA10(RX),一旦与UART5交换,或在本地测试USART1 - > UART5.
通过在发现时连接RX到Tx进行测试,设置Rx然后TX一个字符串都应该工作,Rxbuffer应该反映这一点.
然后连接到你的适配器都应该工作.,LEDS应该闪烁.
如果没有,交换Tx和Rx.
检查DB9上的环回.
如果DB9上有调制解调器或PC,则需要在调试之前管理调制解调器控制信号.(RTC,CTS,DCD,DTR,DTE)见这里.Raspberry为您做到这一点.
断开STM与适配器的连接,并检查DB9上PC的环回,然后检查Tx Rx引脚上的环回.
如果你做到这一点,STM闪烁一个LED,远程另一个,然后你有一个奇偶校验,波特率或字长问题.
下面是407发现(原始发现) - 道歉最初没有看到你有429 - 我们倾向于谈论F4Discovery与F429i-Discovery.现在还有其他基于F4的电路板.
在F4-Discovery板上 - UART5不可用,与在PC12上使用CS43L422(麦克风)的I2S3D冲突.与F429相同的引脚过载问题
还使用其他UART和USART1.
要么 - 配置USART2或USART3
正面是USARTS 2和3已内置RTS/CTS线路,您可以使用.
要么
您需要在电路板上焊接/取消焊接跳线以禁用麦克风.
我在几个不同的STM32板上生成了许多USARTS项目,它们都能完美运行.不幸的是,HAL程序员只提供固定长度的驱动程序,有或没有超时,没有Readline接口.
| 归档时间: |
|
| 查看次数: |
10272 次 |
| 最近记录: |