- UID
- 189409
- 性别
- 男
- 来自
- 北京
|
aboluo 15小时前
不好意思,由于网速太慢,输不出验证码,只好出此下策,直接请教管理员了。。。
飞思卡尔8位机的LIN收发问题
近来特郁闷,首先是被迫选择了飞思卡尔的老8位机MC68HC908GZ32,其次就是调试LIN的时候出了bug,搞的焦头烂额.....具体描述如下,真诚希望大虾们指教。
LIN收发器选择的是TJA1020,控制芯片当然就是那个冤家MC68HC908GZ32了。在作为LIN主机发送报文头的时候,我不想主机接收到自己发出的报文头,于是就做了设置: SCC2_RE = 0;SCC2_TE = 1;——只发不收,当brake场,同步场和ID发送完成后再重新设置SCC2_RE = 1;SCC2_TE = 0;——只收不发,然后等待从机的响应,串口中断接收数据场和校验。可是无论我如何改进程序,接收到的都是乱七八糟的数据!但是我并不死心,因为可能是从机响应的问题(从机是NI的一个LIN调试工具,也大胆怀疑下吧....)。于是找来示波器,结果让我彻底彻底郁闷——从示波器上将数据一位一位读出来,我发送的报文头和从机回应的数据场,校验场居然都是正确的!就是说我的接受数据在单片机出错了!后来用专用工具将LIN数据转换成232数据发到串口助手,也证明了这一点。到底是怎么回事呢?难道是收发之间的切换后的接收器还没有稳定就进入了接受状态?于是乎,我换了一种方法,就是允许接受自己发出的数据SCC2_RE = 1;SCC2_TE = 1;完成后再剔除自己发出的东西,结果竟然是完全正确的!彻底无语......飞思卡尔,告诉我到底是怎么了! |
|