amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 4

MCP2515中断问题

[复制链接]
(3272319)

打赏出0元收入0元

发表于 2020-5-31 21:26:21 | 显示全部楼层 |阅读模式
用的是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芯片,拜托各位了
(3272150)

打赏出0元收入0元

 楼主| 发表于 2020-5-31 21:29:10 | 显示全部楼层
还有个问题:SPI读寄存器期间片选信号开始和结束的地方是否有必要加临界区屏蔽中断防止被其他中断打断影响时序?
(3266960)

打赏出0元收入0元

 楼主| 发表于 2020-5-31 22:55:40 | 显示全部楼层
最新发现:在片选开始和结束的地方加了全局中断的关闭和开启,上述问题似乎改善了,运行一个多小时没有中断管脚持续为低的问题,等待观察一个晚上
(3088234)

打赏出0元收入0元

 楼主| 发表于 2020-6-3 00:34:26 | 显示全部楼层
似乎没有人关注,发现SPI读寄存器的时候关闭中断是有用的,结帖了吧
(3050984)

打赏出0元收入0元

发表于 2020-6-3 10:55:16 | 显示全部楼层
厉害!               
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-8 18:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表