还是资源不够闹得,发送问题解决了,现在又遇上接收问题,好不容易接收时序搞定了,又发现了离奇现象:
首先介绍一下模拟思路:
由于自带3个定时计数器功能被用于3个PWM功能,因此只有使用ICP这个办法了——下降沿捕捉。当接收到起始位时先判断是否低电平然后开始接收,但是经过一番尝试后出现了这个现象
待接收数据为
0C 04 00 0F 20 94 00 09 09 E5
实际接收到变成了
0C 04 00 0F 20 14 00 09 09 65
请看我标记的两个对应数字,很明显第一位高电平被错读为低电平。
曾经怀疑过延时有误,但是尝试微调后要么现象依旧,要么全部数据错误;去掉判断首位低电平后接收到的就是一堆7F,这个也容易理解,而且和上边的现象也相吻合;检查过T/C1初始化确实已经禁止了噪声抑制功能,排除了将首位滤除的可能性(本身也几乎不可能在这种场合有效吧)。
......
无语了,不知道有没有哪位高手帮忙再提点一下,看还有没有什么原因会造成这种丢失。
PS:其他串口模拟方法就免了,毕竟已经到这一步,就差那么一点点了:( |