完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我用RM48芯片做的双机热备结构系统如图所示。
处理单元A和B都留有SCI口输出,输出的数据和通过CAN2(或CAN3)发送的数据相同。 管理板是 定时器中断发送CAN1,处理单元是用定时器中断发送CAN2或 CAN3 CAN通信都采用接收中断函数。 处理单元A的LEDA表示CAN1接收,LEDB表示CAN2发送 处理单元B的LEDA表示CAN1接收,LEDB表示CAN3发送 管理单元LEDA闪灯表示处理单元A作为控制输出;LEDB闪灯表示处理单元B作为控制输出; 调试现象: 1 JTAG接到管理单元 此时,三个电路板的工作都正常,符合设计; 切断处理单元A的电源后,处理单元B现象为:LEDA和LEDB都灭灯,sci串口无输出。管理单元现象为:LEDA和LEDB都灭灯,sci串口发送“AB is wg”,说明执行了程序中的msg4counter==0&&msg6counter==0。在管理单元的rti定时器中断函数中,执行了CAN1的发送函数,但是该函数返回值success=0;这说明没有发送成功。处理单元接收不到CAN1总线的消息,所以也就不通过CAN2(或CAN3)发送数据,所以,管理单元的msg4counter==0,msg6counter==0。 确定问题在管理单元的发送函数canTransmit(canREG1, canMESSAGE_BOX5, tx_data); 三个电路板的连接方式如图所示。当它们都连接好后,运行时是正常的;如果只切断处理单元B的电源后,运行也是正常的;但是只切断处理单元A的电源,出现停机现象。(默认的是处理单元A的优先级高) 为何这个CAN1发送函数会出现这种情况呢? 管理单元的定时器中断函数如下 void rtiNotification(uint32 notification) [ uint32_t flag2_3 = 2; if( ++rtiCounter10ms % 20 == 0 ) // 200 ms period [ if( msg2counter > 0 || msg3counter > 0) //Init: at least one board is ok [ flag2_3=2; msg2counter=0; msg3counter=0; ] canTransmit(canREG1, canMESSAGE_BOX5, tx_data); // TX: can1 if( msg4counter == 0 && msg6counter == 0 ) // both are wrong [ flag2_3=0; ] if(msg4counter > 0 && flag2_3==2 ) // boad A is worker [ sendBytes( A_ok_data, 8); //A board data LED_Toggle(); ] if(msg4counter == 0 && msg6counter > 0 && flag2_3==2 ) // boad B is worker [ sendBytes( B_ok_data, 8); //B board data LEDB_Toggle(); ] if(msg4counter == 0 && msg6counter == 0) // no recive in can2 and can3 [ sendBytes(AB_wrong_data, 8); LED_OFF(); LEDB_OFF(); ] msg4counter=0; msg6counter=0; ] ] |
|
相关推荐
5个回答
|
|
Hi ml0943,
处理单元A断电后,请按下面步骤进行调试。 1. JTAG接上后,确定管理单元程序没有Halt,还是在运行。 2. 检查RTI中断是否正常进入。 3. 检查CAN1总线上是否真的发送信号,用示波器观察。如果没有,检查CAN1状态寄存器,看是否有错误。 4. 检查处理单元B的CAN1接收邮箱是否有收到管理单元发送的报文。 Regards, Jay |
|
|
|
测试回答: 处理单元A断电后, 1. JTAG接上后,管理单元还在运行,还能够进入RTI中断函数,但是不能进入canmessagenotification函数; 2. JTAG接上后,管理单元没有停止,还能够进入RTI中断函数; 3. 示波器接到CAN1的CANH 和CANL端,由于采用的是在200ms的定时器中断函数中CAN1发送,所以,多次扫描后,还能观察到方波信号,如图所示 4. JTAG接到处理单元B后,在canmessagenotification函数里设置断点,程序运行,不能进入该中断函数。 |
|
|
|
你好,我写了个简单的程序,实现管理单元CAN1 MESSAGEBOX1发送,发送成功则闪灯 处理单元A采用中断接收,处理单元B也采用接收中断。每次接收到数据,则闪灯。 处理单元B断电后,处理单元A能接收到数据,闪灯; 处理单元A断电后,处理单元B灭灯,管理单元灭灯,但是示波器测CAN1的引脚,能收到方波信号。 |
|
|
|
你好,问题解决了,我找了个板子替换了处理单元A,程序烧进去后,切换正常,满足设计要求。 但是不太明白这个板子哪里坏了。从板子上看不出哪里元器件 有问题。 |
|
|
|
heks 发表于 2018-6-21 10:47 你好,原来那个板子换一个CAN的收发器再试试。 Regards, Jay |
|
|
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
404 浏览 0 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
930 浏览 1 评论
537 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
413 浏览 1 评论
969 浏览 0 评论
63浏览 3评论
CC3100BOOST使用CC3200lunchXL进行烧录
912浏览 2评论
156浏览 2评论
197浏览 2评论
175浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 07:09 , Processed in 0.907368 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号