新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32的CAN應用嘗試

        STM32的CAN應用嘗試

        作者: 時間:2016-11-27 來源:網絡 收藏
        最近向系統的學習一下CAN總線的應用,苦于找不到合適的板子來做實驗。剛好看到STM32單片機自帶有CAN控制器,就想通過STM32作為載體來學習一下CAN總線。
        CAN控制器之外加上CAN收發器就可以用于CAN通訊了,于是隨便找了一個小板子,焊接上CAN收發器TJA1050,就可以用于CAN通訊了。
        在這篇博文中,先把通常的思路給自己理清一下。至于CAN協議的具體內容還是要參考CAN-BUS的規范了。在這里就是講使用STM32單片機的CAN的簡單思路。

        STM32 CAN總線初始化步驟:

        本文引用地址:http://www.104case.com/article/201611/322580.htm

        1、配置相關引腳的復用功能,使能CAN時鐘。

        使能CAN時鐘,通過APB1ENR的第25位來設置。其次要設置CAN的相關引腳為復用輸出,設置為上拉輸入(CAN_RX),設置為復用輸出(CAN_TX),并使能PA口的時鐘。

        2、設置CAN工作模式及波特率等。

        先設置CAN_MCR寄存器的INRQ位,讓CAN進入初始化模式,然后設置CAN_MCR的其他相關控制位,再通過CAN_BTR設置波特率和工作模式(正常模式/環回模式)等信息。最后設置INRQ為0,退出初始化模式。

        3、設置濾波器。

        設置CAN_FMR的FINIT位,讓過濾器組工作在初始化模式下,然后設置濾波器組0的工作模式以及標識符ID和屏蔽為。最后激活濾波器。并退出濾波器初始化模式。如果用到中斷,還要配置中斷模式。

        配置系統時鐘和引腳不用做過多的說明了,每一個例程基本上都有所包含。

        重要的一點事如何設計CAN的工作模式和波特率。

        當CAN進入初始化之后,先設置CAN_MCR的控制位。見下面的圖


        用來控制這些設置。

        接下來是設置寄存器CAN_BTR,通過這個寄存器來設置CAN的工作模式和波特率。

        寄存器描述


        程序代碼


        mode用來設置模式,普通模式或者回環模式。

        而下面的四個用來設置波特率,tsjw tbs2 tbs1 brp

        這四個參數是怎么來決定CAN的波特率的呢?


        然后使CAN退出初始化模式

        然后再初始化過濾器


        然后就可以開始進行通訊了。

        待續




        關鍵詞: STM32CAN應用嘗

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 洛川县| 太仆寺旗| 水富县| 琼中| 革吉县| 方山县| 确山县| 武邑县| 瑞安市| 灵山县| 高陵县| 方山县| 平乡县| 孝义市| 宾川县| 綦江县| 宜春市| 大连市| 彰化县| 呈贡县| 双峰县| 平和县| 乌兰浩特市| 麻江县| 柳河县| 玉溪市| 阿鲁科尔沁旗| 泊头市| 文登市| 遵义县| 泗洪县| 从江县| 泾川县| 龙游县| 丰城市| 全椒县| 揭阳市| 康保县| 灵石县| 永济市| 皮山县|