|
发表于 2013-9-27 14:03:26
|
显示全部楼层
cocomobei00 发表于 2013-3-4 17:49 ![](static/image/common/back.gif)
问题得到就解决了,先总结如下:
1.主要是硬件上原因,硬件上将MCP2515的CRXD与单片机的PD7连接,我在单片 ...
你好,我在学习MCP2515的过程中遇到一个问题:- uchar mcp2515_init(void)
- {
- uchar temp[4] = { 0, 0, 0, 0 };
- uchar TempData;
-
- // MCP2515 启动前进行软件复位
- SPI_PORT &= ~(1<<SS); //MCP2515的CS有效
- SPI_MasterTransmit(SPI_RESET);
- SPI_PORT |= (1<<SS); //MCP2515的CS无效
-
- //DelayMS(5);
-
- Usart_Transmit(mcp2515_read_register(CANSTAT));
-
- //设置为配置模式
- mcp2515_bit_modify(CANCTRL,0xE0,(1<<REQOP2));
- DelayMS(5);
- //验证是否进入配置模式
- TempData = mcp2515_read_register(CANSTAT);
- Usart_Transmit(TempData);
- if((TempData&0xE0)!=(1<<REQOP2))
- {
- Usart_Transmit(0xFF);//测试用
- return OPMODE_CONFIG_EEROR;
- }
复制代码 我在MCP2515的初始化代码里面,在设置工作模式的后面加入验证代码,以确认是否真的进入我想要的模式。初始化代码放在main函数中执行一次。我在给系统上电的时候,发现大部分时候都是验证不正确,不过也有几次能够通过验证。我用的是Mega16A,我参考过几个帖子,代码应该没有错误,都是参考别人成功的代码,不过别人没有做工作模式的验证。请问你有没有遇到过这个问题呢? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|