这两天在做ModBus协议通信,首先要解决的问题就是串口通信的实现。开始做串口通信准备用89s52做的,当然这个真的很简单,所以就一直没把这件事放心上,可是后来领导突然变主意了,说实验员焊的万能板子上的芯片是MC9S12XET256,所以你也要改。。。。。改。。。
没办法,只能一边研究一边做。首先去网上查了很多资料,回来设置寄存器(此处省略,网上有很多这样的文章),写发送函数(同样省略,网上一搜一大把)。一切貌似很正常的就这样没有任何阻力的完成了,很兴奋,然后就去验证,验证过程中出现问题了,不管我怎么改程序发送的数据和串口通信助手收到的数据总是不一致……这下崩溃了,想来想去好像没什么地方有毛病啊,波特率设置了,9600,虽然因为PLL锁出来的fBUS是16M,设置出来的波特率是9615,应该问题也不大啊。崩溃了。。继续查资料
突然在一个论坛上发现一个数据:波特率的允许误差范围小于3%。。。额。。。额。。 是不是波特率的问题。。。 我用的外部16M的晶振,要锁出来一个比较好的波特率貌似不可能,所以一狠心,管它呢,直接换了11.0592的外部晶振,回来设置波特率,可以设置的正好是9600,回去试一下。。。一切OK~~挖哈哈 原来3% 以内也不一定行 蛋疼 认为不好的拍砖请轻轻的拍,额第一次发这种帖子,给点动力额。。呵呵
一周热门 更多>