|
用的是STM32F407的SPI2连接MCP2515扩展一路CAN,硬件SPI通讯方式,配置完成后能够正常收发,但是一段时间后会不定时的出现以下问题:
1.进入中断后读MCP2515的中断寄存器的值是0xFF,此时清除全部中断无效导致中断管脚一直低电平,读其他寄存器也是0xFF。且0xFF是SPI读寄存器返回的,并不是SPI那里等待返回超时返回的0xFF。
2.有时会是读发送状态寄存器返回的0xFF,然后情况就跟1一样了。
有人说是波特率的问题,我还专门检查了:
mcp2515_cnf1 cnf1 = {0};
mcp2515_cnf2 cnf2 = {0};
mcp2515_cnf3 cnf3 = {0};
cnf1.bits.BRP = 1;
cnf1.bits.SJW = MCP2515_SJW_1TQ;
mcp2515_write(MCP2515_CNF1, cnf1.reg);
cnf2.bits.BTLMODE = MCP2515_BTLMOD_PHSEG2;
cnf2.bits.SAM = MCP2515_SAM_1TM;
cnf2.bits.PRSEG = MCP2515_PRSEG_6TQ;
cnf2.bits.PHSEG1 = MCP2515_PHSEG1_7TQ;
mcp2515_write(MCP2515_CNF2, cnf2.reg);
cnf3.bits.SOF = MCP2515_BTLMOD_PHSEG2;
cnf3.bits.WAKFIL = MCP2515_SAM_1TM;
cnf3.bits.PHSEG2 = MCP2515_PHSEG2_2TQ;
mcp2515_write(MCP2515_CNF3, cnf3.reg);
晶振是8M,应该没问题的。
还有开了ERRIF中断,并做了处理清除中断。
我想知道各位有没有项目上用到这个芯片能正常工作的,目前只能不断的去检测中断管脚,如果一直是低电平就执行初始化。但这样后丢数据,项目对数据的完整性要求还蛮高的。
这个我不知道是2515的bug还是SPI的驱动有问题,又或者是什么别的原因,网络上似乎没看到类似的问题。顺便问问有没有其他好的扩展CAN芯片,拜托各位了 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|