2022年模拟SPI口实现对CAN控制器mcp的操作程序 .pdf

上传人:Q****o 文档编号:28415462 上传时间:2022-07-28 格式:PDF 页数:3 大小:35.60KB
返回 下载 相关 举报
2022年模拟SPI口实现对CAN控制器mcp的操作程序 .pdf_第1页
第1页 / 共3页
2022年模拟SPI口实现对CAN控制器mcp的操作程序 .pdf_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《2022年模拟SPI口实现对CAN控制器mcp的操作程序 .pdf》由会员分享,可在线阅读,更多相关《2022年模拟SPI口实现对CAN控制器mcp的操作程序 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、模拟 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 0 x31 #define CAN_25Kbps 0 x13 #define CAN_50Kbps 0 x09 #define CAN_100Kbps 0 x04 #define CAN_125Kbps 0 x03 #define CAN_250Kbps 0 x01

2、#define CAN_500Kbps 0 x00 /void SPIReset(void); /void SPIByteWrite(unsigned char ,unsigned char ); /unsigned char SPIByteRead(unsigned char ); unsigned char dummy; void Init2515(unsigned int IDF) SPIReset(); delay_ms(1); /SPIByteWrite(CANCTRL,0 x80);/CAN工作在配置模式 SPIByteWrite(RXM0SIDH,0 x00); SPIByteW

3、rite(RXM0SIDL,0 x00); SPIByteWrite(RXF0SIDH,0 x00); SPIByteWrite(RXF0SIDL,0 x00); SPIByteWrite(RXM1SIDH,0 x00); SPIByteWrite(RXM1SIDL,0 x00); SPIByteWrite(RXF2SIDH,0 x00); SPIByteWrite(RXF2SIDL,0 x00); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - -

4、- - - - - /设置波特率为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,0 x80|PHSEG1_3TQ|PRSEG_1TQ); /set CNF3,PHSEG2=(2+1)TQ=3TQ, 同时当 CANCTRL.CLKEN=1 时设定 CLKOUT 引脚为时

5、间输出使能位 SPIByteWrite(CNF3,PHSEG2_3TQ); /set TXB0,设置发送缓冲器0 的标识符和发送的数据,以及发送的数据长度 SPIByteWrite(TXB0CTRL,0 x03);/设置发送缓冲器0 控制寄存器清零TXREQ, 发送优先级最高 /BitModiMcp2515(TXB0CTRL,0 x08,0 x00); SPIByteWrite(TXB0SIDH,IDF);/设置发送缓冲器0 的标准标识符,待修改* SPIByteWrite(TXB0SIDL,0 xE0);/用到标准标识符 SPIByteWrite(TXB0DLC,DLC_8);/设置发送数据

6、的长度为8 个字节 /SPIByteWrite(TXB0D0,0 x1E);/有待修改及确定是否使用 /SPIByteWrite(TXB0D1,0 x10); / 有待修改及确定是否使用 /设置接收缓冲器0 的标识符和初始化数据 /SPIByteWrite(RXB0SIDH,0 x55);/设置接收缓冲器0 的标准标识符,待修改* /SPIByteWrite(RXB0SIDL,0 xE0);/用到标准标识符 SPIByteWrite(RXB0CTRL,0 x20);/仅仅接收标准标识符的有效信息,FIILHIT0=0表示RXB0 ,采用 FILHIT0 SPIByteWrite(RXB0DLC

7、,DLC_8);/设置接收数据的长度为8 个字节 SPIByteWrite(RXF0SIDH,0 xE0);/初始化接收滤波器0,待修改 * SPIByteWrite(RXF0SIDL,0 xE0); SPIByteWrite(RXM0SIDH,0 xFF);/初始化接收屏蔽器0,待修改 * SPIByteWrite(RXM0SIDL,0 xE0); /设置接收缓冲器1 的标识符和初始化数据 /SPIByteWrite(RXB1SIDH,IDF); /设置接收缓冲器0 的标准标识符,待修改* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -

8、- - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - /SPIByteWrite(RXB1SIDL,0 xE0);/用到标准标识符 SPIByteWrite(RXB1CTRL,0 x20);/仅仅接收标准标识符的有效信息,FIILHIT0=0表示RXB0 ,采用 FILHIT0 SPIByteWrite(RXB1DLC,DLC_8);/设置接收数据的长度为8 个字节 SPIByteWrite(RXF2SIDH,0 x00);/初始化接收滤波器2,待修改 * SPIByteWrite(RXF2SIDL,0 xE0); SPIByteWr

9、ite(RXF3SIDH,0 x01);/初始化接收滤波器3,待修改 * SPIByteWrite(RXF3SIDL,0 xE0); SPIByteWrite(RXF4SIDH,0 x02);/初始化接收滤波器4,待修改 * SPIByteWrite(RXF4SIDL,0 xE0); SPIByteWrite(RXF5SIDH,0 x56);/初始化接收滤波器5,待修改 * SPIByteWrite(RXF5SIDL,0 xE0); SPIByteWrite(RXM1SIDH,0 xFF);/初始化接收屏蔽器1,待修改 * SPIByteWrite(RXM1SIDL,0 xE0); /设置接收

10、缓冲器0 中断 SPIByteWrite(CANINTF,0 x00);/接收完一次必须对中断标志位清0 SPIByteWrite(CANINTE,0 x02);/接收缓冲器0 满中断使能位 * 修改成 01-02 /设置单触发模式1 使能,报文尝试发送一次;0 禁止。如有需要报文会重发 /BitModiMcp2515(CANCTRL,0 x08,0 x00); SPIByteWrite(CANCTRL,REQOP_NORMAL | CLKOUT_ENABLED);/设置正常模式 BitModiMcp2515(CANCTRL,0 xE7,0 x04); dummy=SPIByteRead(CANSTAT); if (OPMODE_NORMAL != (dummy & 0 xE0) SPIByteWrite(CANCTRL,REQOP_NORMAL | CLKOUT_ENABLED);/ 判断进入正常工作模式 /SPIByteWrite(CANCTRL,0 x00);/选定正常工作模式 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁