完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
#define NUM_OF_ECAN_BUFFERS 32unsignedintecan1MsgBuf[NUM_OF_ECAN_BUFFERS][8]_.((aligned(NUM_OF_ECAN_BUFFERS*16)))、void EcanRxInit(){C1CTRL1bits.REQOP=4;//set in configuration mode(C1CTRL1bits.OPMODE!4;EcanClkInit();C1FCTRLbits.DMABS=3;DMABS=3;//12FiFO C1FCTRL比特.FSA=3;//12FiFO中FiFOC1FCTRLC1FCTRLTTCTRL比特=3;//FiFo计数从第三缓冲区//C1FCFCFCTRL=0FSA=3;//FiFo计数从第三缓冲区//C1FCFCTRL=0FFFFFFFFFFF计数,32缓冲区Dma1RXInit()//32缓冲区Dma32缓冲区Dma1RXInit();;C1CTRLLLL1比特1C1CTRLL1比特1比特.WIN=1=1.WIN=1;;;;;F0MSK=0x0;/*C配置接受过滤器掩码0寄存器以掩码SID<2:0>*掩码位(11位):0b1111111 1111*/C1RXM0SIDbits.SID=0b11111111111;//C1RXM1SIDbits.SID=0b11111111111;/*配置接受过滤器0以匹配标准标识符-Filter位(11位):0b011010xxxSeD范围0x1D0~0x1D7的消息将被ECAN模块接受。*/C1RXF0SIDbits.SID=0b00000000000;/*Acceptance Filter 0检查标准标识符*/C1RXM0SIDbits.MIDE=0x1;C1RXF0SIDbits.EXIDE=0x0;g消息*/C1FEN1bits.FLTEN0=0x1;/*访问ECAN控制寄存器的清除窗口位*/C1CTRL1bit.WIN=0x0;C1TR23CONbits.TXEN2=0;C1TR23CONbits.TX2PRI=0b11;/*将ECAN模块置于正常模式。*/C1CTRL1BIT.ReQOP=0;而(C1CTRL1BITS)OPMODE!(0);}无效EcanClkInit()}无效EcanClkInit(){C1CTRL1位.CANCKS=0x0;C1CFCFCFG1位C1CFCFG1位C1CFG1C1CFG1位SJJW=0x3;SJJW=0x3;//同步seg seg=1tqC1CFG1C1CFG1位1tq=1tqC1CFG1G1C1CFG1位1tq=1tq,BRP=BRP=BRP_VAL;C1CFCFCFCFCFG2G2G2G2G2=BRP=BRP=BRP_BRP_BRP_VAL;C1CFG2G2G2G2G2G2G2G2G2=BRCFCFG2=BRCFG2=BRCFP=BRP_CFP G2bits.PRSEG=0x4;//proseg=3tq C1CFG2bits.SAM1; //总线线路在采样点//C1CFG2位采样3次,采样3次,采样3次,采样3次,采样点为//C1CFG2G2位。WAKFIL=1;}WAKFIL=1}void_u vo_u.u.u.u.(u中断_(u中断_(u中断_(u中断_(u中断(u截止_u中断_u auto_u auto_psv))DMA1中断(无效{{{{{如果(IFS0比特(IFS0bits.DMA1bits.DMA1bits.DMA1IF1IF位s.DMA1IF1IFprintf("%c),ecan1MsgBuf[2][3]&0xFF); printf("%c",(ecan1MsgBuf[2][4]&0xFF00) >> 8); printf("%c",ecan1MsgBuf[2][4]&0xFF); printf("%c",(ecan1MsgBuf[2][5]&0xFF00) >> 8); printf("%c",ecan1MsgBuf[2][5]&0xFF); printf("%c",(ecan1MsgBuf[2][6]&0xFF00) >> 8); printf("%c",ecan1MsgBuf[2][6]&0xFF)C1RXFUL1bits.RXFUL2=0;printf("nr");}IFS0bits.DMA1IF=0;}我已经如上所述进行了ecan接收。接收缓冲区将在我的接收节点的Tx管脚被拔出并重新连接时获得数据。我已经结束了我的巴士使用120欧姆电阻在两侧。我应该怎么做继续接待……?
|
|
相关推荐
19个回答
|
|
|
我们是否想通过端接120欧姆电阻来制造can总线,或者这个端接是否是在我们的dspic33ep256mc502控制器本身中完成的……?
|
|
|
|
|
|
嗯,不要在中断处理程序中做PROTFF……是的,在PIC之后,你需要终结者,也需要一个总线驱动!
|
|
|
|
|
|
你说公共汽车司机是什么意思?
|
|
|
|
|
|
像LTC2575这样的东西,我们最近使用过。
|
|
|
|
|
|
嗨,DarioG,我的控制器dspic 33ep256mc502有内置的Ecan模块,我正在尝试编程那个模块。使用LTC2875的目的是什么……
|
|
|
|
|
|
嗯,我用的PIC和你用的基本一样,而且它有*内部控制器,也就是说,不需要MCP2515或类似的,但是你需要一个线路驱动器!从TTL转换为总线级。
|
|
|
|
|
|
DarioG,但是在任何微芯片数据表中都没有描述使用线驱动器。
|
|
|
|
|
|
也许吧,但是我很确定你需要一个线司机…
|
|
|
|
|
|
好的,谢谢,我只想使用2个微控制器的CAN模块,这样我能把一个TX连接到第二个RX,反之亦然呢?(和UART一样)我的行长度只有10cm。所以我需要一个线驱动器吗?请回复。
|
|
|
|
|
|
嗨,DarioG,我的CAN总线长度只有10cm,这个设置需要有LTC 2875。
|
|
|
|
|
|
理论上,只有2个设备,没有
|
|
|
|
|
|
那么,我的案子会有什么问题呢?我能把一个TX连接到第二个RX,反之亦然吗?
|
|
|
|
|
|
是的,我做了测试,甚至使用2罐一张照片。
|
|
|
|
|
|
你通过这样的联系得到沟通吗?
|
|
|
|
|
|
是的,或者更确切地说,我得到了“ACK”,这是我当时所需要的。
|
|
|
|
|
|
奥克…如果可能的话,你可以发送这个项目的UR代码…
|
|
|
|
|
|
嗯,CAN是一个非常复杂的项目,但是发送一条消息是很容易的…
|
|
|
|
|
|
我已经把我的接收代码张贴在这篇文章的开头。如果你能检查这个代码,请参阅代码。
|
|
|
|
|
|
我认为,如果只是将一个CAN控制器上的TX连接到另一个控制器上的RX,那么它不会工作。当CAN控制器发送一个包时,它同时监听RX管脚以便执行仲裁。您需要创建公共CAN总线,将所有RX和TX管脚连接在一起。呃。当然,如果两个TX管脚是推挽式的,那么连接两个TX管脚将导致短路,所以确保它们是开路漏极,或者使用二极管。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475 浏览 0 评论
5794 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1098浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 12:53 , Processed in 1.170839 second(s), Total 108, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1632