模拟spi口实现对can控制器mcp2515的操k作程序.docVIP

模拟spi口实现对can控制器mcp2515的操k作程序.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模拟SPI口实现对CAN控制器mcp2515的操作程序(2009-06-18 11:33:20) can总线?mcp2515?参考程序?it? #include 2515.h #include SPI.h #include reg51.h #include Function.h #define CAN_10Kbps 0x31 #define CAN_25Kbps 0x13 #define CAN_50Kbps 0x09 #define CAN_100Kbps 0x04 #define CAN_125Kbps 0x03 #define CAN_250Kbps 0x01 #define CAN_500Kbps 0x00 ?//void SPIReset(void); //void SPIByteWrite(unsigned char ,unsigned char ); //unsigned char SPIByteRead(unsigned char ); unsigned char dummy; ?void Init2515(unsigned int IDF) { 燬PIReset(); 燿elay_ms(1); ??/SPIByteWrite(CANCTRL,0x80);//CAN工作在配置模式 ? ??? SPIByteWrite(RXM0SIDH,0x00); ?SPIByteWrite(RXM0SIDL,0x00); ?SPIByteWrite(RXF0SIDH,0x00); ?SPIByteWrite(RXF0SIDL,0x00); ? ?SPIByteWrite(RXM1SIDH,0x00); ?SPIByteWrite(RXM1SIDL,0x00); ?SPIByteWrite(RXF2SIDH,0x00); ?SPIByteWrite(RXF2SIDL,0x00); ? ?//设置波特率为10Kbps ?//set CNF1,SJW=00,长度为1TQ,BRP=49,TQ=[2*(BRP+1)]/Fsoc=2*50/8M=12.5us ?SPIByteWrite(CNF1,CAN_125Kbps); ?//set CNF2,SAM=0,在采样点对总线进行一次采样,PHSEG1=(2+1)TQ=3TQ,PRSEG=(0+1)TQ=1TQ ?SPIByteWrite(CNF2,0x80|PHSEG1_3TQ|PRSEG_1TQ); ?//set CNF3,PHSEG2=(2+1)TQ=3TQ,同时当CANCTRL.CLKEN=1时设定CLKOUT引脚为时间输出使能位 ?SPIByteWrite(CNF3,PHSEG2_3TQ); ? ?//set TXB0,设置发送缓冲器0的标识符和发送的数据,以及发送的数据长度 ? SPIByteWrite(TXB0CTRL,0x03);//设置发送缓冲器0控制寄存器清零TXREQ,发送优先级最高 ?//BitModiMcp2515(TXB0CTRL,0x08,0x00); ? ?SPIByteWrite(TXB0SIDH,IDF);//设置发送缓冲器0的标准标识符,待修改*** ?SPIByteWrite(TXB0SIDL,0xE0);//用到标准标识符 ?SPIByteWrite(TXB0DLC,DLC_8);//设置发送数据的长度为8个字节 ?//SPIByteWrite(TXB0D0,0x1E);//有待修改及确定是否使用 ?//SPIByteWrite(TXB0D1,0x10);//有待修改及确定是否使用 ?? ? ?? ??//设置接收缓冲器0的标识符和初始化数据 ??//SPIByteWrite(RXB0SIDH,0x55);//设置接收缓冲器0的标准标识符,待修改*** ??//SPIByteWrite(RXB0SIDL,0xE0);//用到标准标识符 ??SPIByteWrite(RXB0CTRL,0x20);//仅仅接收标准标识符的有效信息,FIILHIT0=0表示RXB0 ,采用FILHIT0 ??SPIByteWrite(RXB0DLC,DLC_8);//设置接收数据的长度为8个字节 ?? ??? SPIByteWrite(RXF0SIDH,0xE0);//初始化接收滤波器0,待修改*** ??SPIByteWrite(RXF0SIDL,0xE0); ??SPIByteWrite(RXM0SIDH,0xFF);//初始化接收屏蔽器0,待修改*** ??SPIByteWrite(RXM0SIDL,0xE0);??????????? ?? ??//设置接收缓冲器1的标识符和初始化数据 ?? //SPIByteWrite(RXB1SIDH,IDF

文档评论(0)

aliw000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档