完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
如何配置
首先是设置寄存器,按正常设置走就可以,唯一需要注意的地方是串口CR1寄存器的字长设置: 根据帧格式表可以看到,9位数据和8位数据+1位校验所设的M位值相同 所以在CR1寄存器中字长位寄存器的描述,这里所写的数据位其实是指我们平时所说的数据位+校验位, 即: N / 7 / 1:7个数据位,M = 10 ODD / 7 / 1:8个数据位,M = 00 N / 8 / 1: 8个数据位,M = 00 … 现在的代码是串口ODD / 7 / 1, 接收数据,然后发往网络端。 字长寄存器、校验相关的寄存器都设置完成后,串口发送0x31 0x32 0x33,网络端实际收到的是 0x31 0x32 0xB3: 这就很奇怪了,按道理来说,7数据位下不应该存在大于0x7F的数据。 一开始怀疑是串口工具的问题,拿逻辑分析仪抓了下串口的TTL端,数据是正确的。 但也非常容易发现,发生错误的数据0x33,因为奇校验的关系,校验位为1,而10110011刚好为0xB3,所以猜测是单片机将校验位的bit当成了8位数据位里的最高位处理了。 改成偶校验验证猜想: 直接在逻辑分析仪上改为N/8/1解析,完全正确: 因此基本可以验证猜想:单片机在7数据位+校验位的设置下,将校验位当做8位数据位里的最高位给处理了,校验位为1时就会导致数据错误。 如果直接将字长寄存器改为7,同时又设置校验的话,数据会乱,这里就不截图了。 最后处理方式也很简单,串口收到的每个字节的数据&=0x7F即可。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:34 , Processed in 0.694299 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号