STM32_MCP2515調試心得(SPI to CAN)


先說兩句

  MCP2515是一款SPI轉CAN的控制芯片,市面上有很多MCU有自帶CAN控制,但我手頭上這款MCU暫時沒有。但是應用上需要,所以就必須得加了。

參考鏈接

  我在對接開發這款芯片的時候參考了不少連接,以下貼出:

  1)首先得先寫好SPI的驅動,看這個可以更理解深入如何配置

  https://blog.csdn.net/zhengyanan815/article/details/55211620

  1)這個鏈接讓我快速認識讀懂了datasheet中的頻率設置方法

  https://blog.csdn.net/debugcc2530/article/details/107937250

  2)這個鏈接的工具讓我快速計算出我需要的波特率CNF1、CNF2、CNF3配置數,目前我試了WIN7能運行,WIN10不行。

  https://download.csdn.net/download/jx119/9329391?utm_medium=distribute.pc_relevant_download.none-task-download-2~default~BlogCommendFromBaidu~Rate-2.dl_default&depth_1-utm_source=distribute.pc_relevant_download.none-task-download-2~default~BlogCommendFromBaidu~Rate-2.dl_default&dest=https%3A%2F%2Fdownload.csdn.net%2Fdownload%2Fjx119%2F9329391&spm=1003.2020.3001.6616.2

  3)接着就是一款邏輯分析儀了,能更好地抓取SPI、CAN協議波形,分析問題所在,我用的是個人版的。

  https://item.taobao.com/item.htm?spm=a230r.1.14.6.194e296a91MxSJ&id=43809938149&ns=1&abbucket=8&mt=

  4)重中之重就是要看產品的數據手冊了,我一般是上立創搜索下載

  如果有需要的聯系我要,有中、英文版本。

 

正文開始

1)SPI驅動注意點

  •  注意確認是否打開時鍾使能
  • SPI所需要用到的引腳:CLK、MOSI、MISO、NSS(可采用軟件IO控制,如果是硬件I2C配置為SPI_NSS_SOFT方式)
  • SPI初始化方向:SPI_DIRECTION_2LINES(雙向通訊)
  • 數據大小:SPI_DATASIZE_8BIT
  • SPI Clock Phase :SPI_PHASE_2EDGE
  • 主從模式:MCU主機(SPI_MODE_MASTER)、MCP2515從機
  • 大端:SPI_FIRSTBIT_MSB
  • TI模式關閉:SPI_TIMODE_DISABLE
  • 時鍾頻率:數據手冊明確指出為10M
  • 邏輯分析儀調試的時候注意看時序與數據手冊中的時序是否一致,最重要的是NSS是否拉低后通訊,通訊完是否拉高,時鍾腳是否正常輸出使能
  • 記住在讀寫前先關閉中斷使能,讀寫完后再打開中斷使能,避免出現問題。
  • 全雙工的通訊,接收的方法就是寫入0數據,為總線提供時鍾獲取MISO的數據位。

2)MCP2515驅動注意點

  • 配置之前先確定你的SPI輸出時序正常了再往下調,就是發送CAN_RESET寄存器值時序電平邏輯分析儀正常解析:NSS拉低、0xC0、NSS拉高,時鍾8bit。
  • 接下來就是MCP2515的工作模式:正常運行、休眠模式、回環模式、監聽模式、配置模式。數據手冊有,不再贅述。
  • CNF1、CNF2、CNF3需要在配置模式下才可以配置,其他模式不行。Reset后也是進入配置模式,如果不放心可以配置CANCTRL寄存器。再想確認可以讀取CANSTAT寄存器
  • 我目前只用到B0寄存器,其他還沒用。
  • 如果需要數據中斷使能需配置CANINTF和CANINTE,收到后也要清除中斷。
  • 記住發送命令后切換模式並不是立即切換,需要等待發送完成后他才會切換成功,如果要正常傳輸,需要讀取CANSTAT進入正常工作模式后再處理之后的工作。

再說點什么

  寫得不好敬請諒解,如有錯誤或疏漏,煩請指出,不勝感激。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM