完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我首先直接使用Keller 30X连接电脑的RS485接口,这自然没有问题,用Keller自带的小软件直接就能看到结果。 其次让STM32的RS485接口和电脑连接,这步调试整整用了1天半,遇到了几个比较棘手的问题:
最后尝试将Keller 30X和STM32单片机连接,悲剧就发生了。Keller 30X的485接口完全是针对电脑设计的,(9600,n,8,1)的配置下一帧连续发送20多个字节。正如上文所述,单片机需要至少1位的安全时间用于处理中断程序,在接受Keller的快速连发时,下一字节的开始位到来时,单片机还处于中断处理程序中,所以直接将其忽略了,这导致单片机将数据中出现的1->0的跳变认作下一位的起始位,使后续传输全部出错。 不幸的是,Keller 30X的通信芯片不能编程,所以也无法给它加入安全事件。最后我只能采用的模拟信号A/D转换的方式来采集Keller 30X的压力信号。这个故事告诉我们,以后设计面向单片机的UART接口时(不管是RS232,rs485还是TTL,CMOS),一定要考虑到目标单片机的性能。单片机不比电脑,处理一个串口接收中断一瞬间就可以完成,向单片机发送数据时,两字节之间一定要留足安全时间,以保证目标单片机有足够的时间处理中断,读取寄存器中的数据。STM32单片机已经算是快的了,处理一个中断尚且需要1位的时间,如果是51的话,相信这个时间还会更长。 |
|
相关推荐
|
|
1712 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
887 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1269 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1740 浏览 1 评论
552 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 13:48 , Processed in 0.481375 second(s), Total 66, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号