飞思卡尔S12系列单片机CAN总线无法发送数据

2019-07-15 17:26发布

CAN模块初始化代码如下:
void MSCAN_Init(void)
{
    CANCTL1 =0X80;  //enable the MSCAN ,no loopback mode
    CANCTL0 =0X01;  
    while(!CANCTL1_INITAK);
   
    CANBTR0 =0X43;  //波特率500K
    CANBTR1 =0X14;
    CANIDAC =0X00; //two 32bit filter for extended id
   
    CANIDAR0 = 0xff;     
    CANIDAR1 = 0xfe|(SlaveID & 0x80)>>7;     
    CANIDAR2 = 0x01|(SlaveID & 0x7f)<<1;     
    CANIDAR3 = 0xff;
     
    CANIDMR0 = 0xff;
    CANIDMR1 = 0xfe;
    CANIDMR2 = 0x01;
    CANIDMR3 = 0xff;

    CANIDAR4 = 0xff;  
    CANIDAR5 = 0xfe|(BroadCastiD & 0x80)>>7;     
    CANIDAR6 = 0x01|(BroadCastID & 0x7f)<<1;     
    CANIDAR7 = 0xff;
   
    CANIDMR4 = 0xff;
    CANIDMR5 = 0xfe; //debug
    CANIDMR6 = 0x01;  //debug
    CANIDMR7 = 0xff;
     
    CANCTL0 =0;   //exit init mode
    while(CANCTL1_INITAK);
   
    while(!CANCTL0_SYNCH);  //wait until the synchronous with the bus
              
    CANRFLG =0XC3;//reset Rx flag

发送代码如下:
        while(!CANTFLG);
        CANTBSEL =CANTFLG;
        txbuffer =CANTBSEL;
        
        CANTXIDR0 =0xc0;
        CANTXIDR1 =0X0A;
        CANTXIDR2 =0X23;
        CANTXIDR3 =0XFA;
        
        CANTXDSR0 =0X56;
        CANTXDLR =0X01;
        
        CANTXTBPR =0X80;
        
        CANTFLG =txbuffer;
        
        while(!(CANTFLG & txbuffer));
        TURN_ON_LED1;
一个很简单的CAN模块测试程序,通过CAN总线发送一个数0x56发送出去,但是程序运行时会死在
while(!(CANTFLG & txbuffer));这一句,经过硬件仿真后发现是因为清零CANTFLG的相应位使能发送后寄存器CANRFLG里的TSTAT0,TSTAT1这两个标志位一直在10和11之间跳动,导致单片机的CAN模块一直在bus-off和主动错误状态之间跳变,导致数据发不出去,波特率设置没有问题,因为能正常接收到CAN数据,通过请问各位大神有没有遇到过这种情况,怎么解决???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
米斯特_郎
1楼-- · 2019-07-16 21:57
楼主你好,我现在刚好在做S12Z的CAN底层配置,你能提供一下你的初始化配置思路和发送接收函数吗。万分感谢
古今风云
2楼-- · 2019-07-17 00:25
楼主!有MC9S12G64好一点的资料么,最好是中文的,怎么官方资料怎么官方资料都那么多错误?
飞奔的小鹿
3楼-- · 2019-07-17 04:24
米斯特_郎 发表于 2016-6-27 15:33
楼主你好,我现在刚好在做S12Z的CAN底层配置,你能提供一下你的初始化配置思路和发送接收函数吗。万分感谢

不好意思,这个属于公司的机密,不方便透露
飞奔的小鹿
4楼-- · 2019-07-17 07:37
古今风云 发表于 2016-9-23 16:54
楼主!有MC9S12G64好一点的资料么,最好是中文的,怎么官方资料怎么官方资料都那么多错误?

没有,不过还是建议你看英文资料,更权威
pego
5楼-- · 2019-07-17 09:29
 精彩回答 2  元偷偷看……
qq490278162
6楼-- · 2019-07-17 12:56
我有关于CAN总线的一些资料,需要的话可以私信我。

一周热门 更多>