关于MCP2515帧连发、多发的坑
工作中的一個(gè)項(xiàng)目讓我接觸到了MCP2515這個(gè)can控制器芯片,其低廉的價(jià)格讓我毫不猶豫的選擇了它,然而在使用過程中我發(fā)現(xiàn)我遇到了一個(gè)bug,就是在我發(fā)送某幀數(shù)據(jù)后,總線上會(huì)莫名其妙的多幾幀一樣的數(shù)據(jù),而且相隔時(shí)間非常短,在經(jīng)過一天的折磨后,無意在官方社區(qū)網(wǎng)站找到了這個(gè)帖子:http://www.microchip.com.cn/community/forum/viewthread.php?tid=9354
? ? ?里面提到了一個(gè)官方的AN文檔,里面的內(nèi)容大致是:在使用WriteByte(TXB0CTRL,0x08) 這種方式觸發(fā)數(shù)據(jù)發(fā)送后,必須在數(shù)據(jù)發(fā)送之前拉高CS端口,否則會(huì)造成數(shù)據(jù)多發(fā)的現(xiàn)象。
? ? 可是由于我的硬件原因,我并不能滿足這一要求,文檔里還給出了其他兩種結(jié)決方法:使用MCP2515的幾個(gè)特殊指令發(fā)送:
或使用硬件觸發(fā)引腳。
? ? ? 然而當(dāng)我使用這兩種方式時(shí),又發(fā)現(xiàn)一個(gè)BUG,就是我發(fā)送數(shù)據(jù)時(shí)會(huì)發(fā)生收不到數(shù)據(jù)的情況,后經(jīng)測(cè)試,連續(xù)寫SPI數(shù)據(jù)后立即觸發(fā)發(fā)送,會(huì)造成這一現(xiàn)象,需要在連續(xù)寫入數(shù)據(jù)后,在寫入一個(gè)單字節(jié)數(shù)據(jù)(隨便什么數(shù)據(jù),我的選擇是重新寫入數(shù)據(jù)長(zhǎng)度)才能解決。不知道是不是和我的硬件有關(guān),僅作記錄以后再詳細(xì)查找原因。希望對(duì)其他人有幫助。
---------------------?
作者:yizheneng?
來源:CSDN?
原文:https://blog.csdn.net/yizheneng/article/details/53392831?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的关于MCP2515帧连发、多发的坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAN总线基础(二)——CAN总线物理层
- 下一篇: mcp2515 芯片驱动总线错误BUG的