完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我正在尝试编写CAN通信代码,控制器:PIC18F45K80,IDE:MPLAB X,编译器:XC8。CAN配置为125K波特,在内部振荡器上运行:32Mhz。目前希望得到一些简单的数据,然后在其上编写完整的代码。CAN配置完成如下://config pin的CANRX_TRI=INPUT_PIN;CANTX_TRI=OUTPUT_PIN;//将CAN模块输入配置模式CANCON=0x80()(CANSTAT比特.OPMODE==0x04));//将CAN模块输入模式2(FIFO模式)中;//进入CAN模块进入模式2(FIFO模式)ECANCON=ENCHANCE_FIFO_MO;//进入CAN模块进入模式2(FIFO模式)ECANCON=ENCHANCON=ENENCHANCE=ENCHANCE_FIFO_MO_MOMO;//125Kbps=32MHz BRGCON1/125Kbps@32MHzBRGCON1=32MHz BRGCON1=0x87;//SJW=3TQBRP7BRGCONP7BRGCON2=0xBCON2=0xB8;//SJW=3TQ=3TQ=3TQBR接收缓冲器.B1,B2,B3,B3,B4,B5是传输缓冲器BSEL0=0xF8;///初始化接收掩码///初始化接收掩码//第一掩模用于接受所有SID和没有EID的第一掩模用于接受所有SID并且没有EID RXMRXMM0EIDRXMEIDRXM0EIDRXMEIDDRXM0EIDRXM0EIDDDRXM0EIDDHMEIDDDRXMMEIDDRXMEIDRXMEIDH0EIDDDDH=0x00;//RXMMMMMMMMMMMMMMMMMMMMMMMM0EIDEIDEIDDDDRXMEIDRXMM0x00;对于EID和SID RXM1EIDL=0x00;RXM1SIDH=0xFF;RXM1SIDH=0xFF;RXM1SIDL=0xE0;//启用过滤器//启用过滤器//只使用前三个过滤器,仅使用前三个过滤器,RXM1M1M1M1SIFCON0=0xOXFCON0=0x00;RXFCFCON1=0xFCON1=0x00;RXFCON1=0xFCON1=0x00;//指定过滤器以掩掩蔽MSELMSEL0=0xEL0=0XEL0=0xFF;MSEL1=0xEL1=0xFF=0xFF;MSEL1=0x1=0x1=0xFF RXFBCON1=0xRXFBCON7=0xFBCON2=0xFF;RXFFBCON3=0xFF;RXFBCON4=0xFF;RXFFBCON4=0xFBCON4=0xFF;RXFFFBCON5=0XFBCON5=0xFF;RXFBCBCON6=0XFBCON6=0XFBCON6=0xFF;RXFFBCON6=0FBCON6=0XFBCON6=0XFBCON6=0XFBCON6=0XFBCON6=0XFF;RXFBCON7=0XFBCON7=0XFBCON7=0XF初始化接收过滤器RXF初始化接收过滤器RXFXF0EIDF1EIDL=0x00;RXF1SIDH=0x00;RXF1SIDL=0x00;RXF2EIDH=0x00;RXF2EIDL=0x00;RXF2SIDH=0x00;RXF2SIDL=0x00;//1=CANTX管脚将驱动VDD,当隐性//0=CANTX管脚将处于三态时,隐性CIOCONbits.ENDRHI=1;//进入正常模式的CAN模块做{CANCON=NORMAL_MODE;}而同时进行(CANSTATbits.OPMOMODE&MODE_STATUS);//为buf设置接收模式fers RXB0CON = 0x80; RXB1CON = 0x80; B0CON = 0x80;Trying to send message asTXB0EIDH = 0x00; TXB0EIDL = 0x00; TXB0SIDH = 0x32; TXB0SIDL = 0xC0;TXB0DLC = 0x04; TXB0D0 = 0xAA; TXB0D1 = 0xBB; TXB0D2 = 0xCC; TXB0D3 = 0x55; TXB0D4 = 0x00; TXB0D5 = 0x00; TXB0D6 = 0x00; TXB0D7 = 0x00;TXB0CONbits.TXREQ = 1;/将缓冲器设置为发送,但消息不发送到其他节点。在调试CAMSTAT=0x15时,TXErcNT继续递增。TXB0CON(VAL:0x18)也显示TX错误。我用默认的掩码和过滤器值来运行同样的代码(当然,对于接收来说)。我错过了什么?任何建议都会有很大帮助。
|
|
相关推荐
1个回答
|
|
所设置的发送错误比特和发送错误计数器继续递增可以指示消息中的错误数量,但它们基本上都与CAN模块在传输过程中期望的不同。你有什么收发器可以连接到PIC?此外,是否可以看到CANH/L线或康泰X光传输线的某些范围的踪迹?知道信号是什么,我希望它是基于您的设置,也可以给出关于发送错误发生的线索。
|
|
|
|
只有小组成员才能发言,加入小组>>
5003 浏览 9 评论
1921 浏览 8 评论
1852 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3066 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2143 浏览 5 评论
572浏览 1评论
430浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
474浏览 0评论
366浏览 0评论
IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误
852浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 04:19 , Processed in 1.074511 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号