完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32 UART多机通讯可以采用地址唤醒模式,在发送地址字节时设置USART_DR第9位置1即可,原来的标准库对这种模式的驱动没问题,现在最新的HAL驱动库对UART采用DMA发送时,采用的是8位字节数组传送,没法操作第9位,不知道有啥好的解决办法,难道只能放弃DMA发送方式。
|
|
相关推荐
1个回答
|
|
在STM32的HAL库中,确实存在这个问题,因为HAL库的UART DMA发送函数使用的是8位字节数组,无法直接操作USART_DR寄存器的第9位。但是,您可以通过以下方法来解决这个问题:
1. 使用半双工模式:在发送地址字节时,暂时关闭DMA,手动发送地址字节并设置第9位。发送完地址字节后,再开启DMA进行后续数据的发送。 2. 修改HAL库源码:您可以修改HAL库中与UART DMA发送相关的源码,使其支持发送带有地址位标志的数据。这种方法需要一定的C语言和STM32 HAL库的了解。 3. 使用中断方式发送:虽然这种方式不如DMA高效,但可以实现对USART_DR寄存器第9位的控制。您可以在每次发送一个字节时,通过中断手动设置第9位。 4. 考虑使用其他通信协议:如果STM32 HAL库中的UART DMA发送方式确实无法满足您的需求,您可以考虑使用其他通信协议,如SPI、I2C等。 总之,虽然STM32 HAL库的UART DMA发送方式存在一定的局限性,但通过上述方法,您仍然可以实现地址唤醒模式的多机通信。希望这些建议对您有所帮助! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1263 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1269 浏览 1 评论
670 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
499 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1264 浏览 2 评论
1703浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
397浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
366浏览 3评论
353浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
330浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-14 15:13 , Processed in 1.022945 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号