完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
现在手里有三块板子,两块BeagleBone板,一块TMS320F2812的自制板,发现这三块板子两两连接时能够互通,但是三个板子连接后无法通信,目前可以确定的是连线没有错误。
测试时使用DSP板发送数据帧,两个BB板上接收,结果是BB板上无法收到数据帧。观察到DSP板的发送位TRSn置位后没有复位,一直为1,CANES寄存器里的应答位ACKE也置一,有应答错误位,错误计数器显示为128,说明数据并没有发送成功。然后将其中的一个BB断开,退出CAN总线连接,测试DSP板和一块BB板收发,结果是收发正常。 下面是DSP上的CAN配置,BB上移植了linux,使用的是candump、cansend void InitECana(void) [ EALLOW; /* Configure eCAN pins using GPIO regs */ GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1; GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1; ECanaRegs.CANRIOC.bit.RXFUNC = 1; ECanaRegs.CANtiOC.bit.TXFUNC = 1; /* Configure eCAN for HECC mode , enable 0~31 mailboxes */ ECanaRegs.CANMC.bit.SCB = 1; ECanaRegs.CANES.all /* Initialzation the master control register of mailbox to zero (CANMCTRL) */ ECanaMboxes.MBOX0.MCF.all = 0x00000000; /* Configure bit timing parameters */ ECanaRegs.CANMC.bit.CCR = 1; while(ECanaRegs.CANES.bit.CCE != 1)[] ECanaRegs.CANBTC.bit.BRP = 14; ECanaRegs.CANBTC.bit.TSEG1 = 13; ECanaRegs.CANBTC.bit.TSEG2 = 4; ECanaRegs.CANMC.bit.CCR = 0; while(ECanaRegs.CANES.bit.CCE != 0)[] /* Disable all the mailboxes */ ECanaRegs.CANME.all = 0x00000000; /* 开中断 */ ECanaRegs.CANGIM.bit.I0EN = 1; ECanaRegs.CANGIM.bit.I1EN = 1; ECanaRegs.CANGIM.bit.SIL = 1; ECanaRegs.CANMIL.all = 0x00000000; ECanaRegs.CANMIM.all = 0xffffffff; EDIS; ] void ConfigCAN(void) [ EALLOW; /* Write to the MSGID filed of Transmit Mailbox 0~15 */ ECanaMboxes.MBOX0.MID.all = 0x91111111; ECanaMboxes.MBOX1.MID.all = 0x91111112; ECanaMboxes.MBOX2.MID.all = 0x91111113; ECanaMboxes.MBOX3.MID.all = 0x91111114; ECanaMboxes.MBOX4.MID.all = 0x91111115; ECanaMboxes.MBOX5.MID.all = 0x91111116; ECanaMboxes.MBOX6.MID.all = 0x91111117; ECanaMboxes.MBOX25.MID.all = 0x91111121; ECanaMboxes.MBOX26.MID.all = 0x91111122; ECanaMboxes.MBOX27.MID.all = 0x91111123; ECanaMboxes.MBOX28.MID.all = 0x91111124; ECanaMboxes.MBOX29.MID.all = 0x91111125; ECanaMboxes.MBOX30.MID.all = 0x91111126; ECanaMboxes.MBOX31.MID.all = 0x91111127; /* set the DLC field of the Transmit Mailboxes MSCTRL */ ECanaMboxes.MBOX0.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX1.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX2.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX3.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX4.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX5.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX6.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX25.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX26.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX27.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX28.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX29.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX30.MCF.bit.DLC = 0x8; ECanaMboxes.MBOX31.MCF.bit.DLC = 0x8; /* Write the data field of the Transmit Mailboxes */ ECanaMboxes.MBOX0.MDRH.all = 0x00000000; ECanaMboxes.MBOX0.MDRL.all = 0x00000000; ECanaMboxes.MBOX1.MDRH.all = 0x00000000; ECanaMboxes.MBOX1.MDRL.all = 0x00000000; ECanaMboxes.MBOX2.MDRH.all = 0x00000000; ECanaMboxes.MBOX2.MDRL.all = 0x00000000; ECanaMboxes.MBOX3.MDRH.all = 0x00000000; ECanaMboxes.MBOX3.MDRL.all = 0x00000000; ECanaMboxes.MBOX4.MDRH.all = 0x00000000; ECanaMboxes.MBOX4.MDRL.all = 0x00000000; ECanaMboxes.MBOX5.MDRH.all = 0x00000000; ECanaMboxes.MBOX5.MDRL.all = 0x00000000; ECanaMboxes.MBOX6.MDRH.all = 0x00000000; ECanaMboxes.MBOX6.MDRL.all = 0x00000000; ECanaMboxes.MBOX25.MDRH.all = 0x00000000; ECanaMboxes.MBOX25.MDRL.all = 0x00000000; ECanaMboxes.MBOX26.MDRH.all = 0x00000000; ECanaMboxes.MBOX26.MDRL.all = 0x00000000; ECanaMboxes.MBOX27.MDRH.all = 0x00000000; ECanaMboxes.MBOX27.MDRL.all = 0x00000000; ECanaMboxes.MBOX28.MDRH.all = 0x00000000; ECanaMboxes.MBOX28.MDRL.all = 0x00000000; ECanaMboxes.MBOX29.MDRH.all = 0x00000000; ECanaMboxes.MBOX29.MDRL.all = 0x00000000; ECanaMboxes.MBOX30.MDRH.all = 0x00000000; ECanaMboxes.MBOX30.MDRL.all = 0x00000000; ECanaMboxes.MBOX31.MDRH.all = 0x00000000; ECanaMboxes.MBOX31.MDRL.all = 0x00000000; /* Enable all Mailboxes */ ECanaRegs.CANME.all = 0xFE00007F; ECanaRegs.CANMD.all = 0xFE000000; ECanaRegs.CANTA.all = 0xffffffff; ECanaRegs.CANRMP.all = 0xffffffff; ECanaRegs.CANGIF0.all = 0xffffffff; ECanaRegs.CANGIF1.all = 0xffffffff; EDIS; ] 有谁遇到这样的问题吗,望帮忙解答,谢谢! |
|
相关推荐
13个回答
|
|
有没有尝试过用几个纯A8组成CAN网络进行通信。
|
|
|
|
|
|
|
|
|
|
|
|
BeagleBone板子上用的canutils里的candump接收的,没有设置过滤的ID,也就是说总线上的帧都可以收到,只用一个BB板和DSP通信是正常的,再加上一个BB板就不对了,DSP发不出去,但是BB板之间可以收发 |
|
|
|
|
|
|
|
|
|
|
|
谢谢你的回复,我后来测试发现使用两块DSP板和一块BB板进行收发,结果是正常的,然后我看了下之前的错误是应答错误,应答是接收器在正确接收到数据帧后在应答间隙回复一个显性位,这个是硬件自动回复,还没有到标识符过滤的,所以问题出现在BB板的CAN收发器上,可是不知道CAN收发器有什么区别,都是3.3V的SN65HVD230,不同厂家,不明白为什么不匹配,不能正常收发。 |
|
|
|
|
|
|
|
|
|
|
|
shensi72 发表于 2018-5-15 14:29 请问最终有定位到是CAN收发器的问题么? |
|
|
|
是的,应该是买回来的收发器的问题,我把买的收发器上的120欧电阻去掉后,四个板子(2BB,2DSP)可以连接通信了 |
|
|
|
在can总线中,应该需要保留一个120欧终端匹配电阻吧,你全部去掉了? |
|
|
|
不好意思,是保留了一个,但是没有电阻一对一也可以通信,120欧电阻不是用来抗干扰的吗,我以为可有可无,因为我这的实验是近距离通信 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
677 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
599 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1052 浏览 1 评论
736 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
523 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
160浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
125浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
126浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
122浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
167浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 05:44 , Processed in 0.932275 second(s), Total 73, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号