
我在第一篇文章中已經跟大家介紹過379解碼多摩川編碼器的一些入手小知識,鏈接如下TMS320F28379D之CLB解碼多摩川編碼器1——入手小知識(原創)
請大家一定要看入手小知識,再來看例程分析。
今天跟大家分析一下TI的官方例程。
首先,我默認你已經安裝了CCS,目前我裝的是CCS9.2,CCS10已經出了,基本上從9.2開始是嵌入了CLB TOOL的,可用于開發CLB,我還沒深入研究過,以下是CCS下載鏈接:
http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html
以下兩篇是官方CLB中文參考文檔的鏈接:
TI官方的CLB設計說明文檔鏈接http://www.ti.com.cn/cn/lit/an/zhca963/zhca963.pdf
TI官方CLB用戶指南中文版鏈接http://www.ti.com.cn/cn/lit/ug/zhcu712/zhcu712.pdf
其次,是官方例程的獲取,大家可以通過安裝TI官方針對C2000處理器推出的ControlSuit獲取,我裝的版本是3.4,注冊一個TI賬號就可以下載了。
下載安裝C2000 SDK或者MotorControl SDK也可以獲取到這個例程,以下是下載鏈接:
TI 官方C2000 WARE下載鏈接http://www.ti.com.cn/tool/cn/C2000WARE?keyMatch=C2000%20WARE&tisearch=Search-CN-everything
TI官方MotorControl SDK下載鏈接http://www.ti.com.cn/tool/cn/C2000WARE-MOTORCONTROL-SDK
接下來,進入正題,LIB版本的例程,部分函數是封庫的,在工程中需要添加相應的LIB文件,才可以編譯通過,由于是封庫的,后續開發可能會有所限制,比如解碼運行時間過長,解碼+發送大概要20us吧,是的,20us,難以承受。
用CCS打開LIB例程:

工程存放路徑如下:
C:tic2000C2000Ware_MotorControl_SDK_3_00_00_00solutionsboostxl_posmgrf2837xdccstformat
雙擊打開pm_tformat_main.c

mian主函數前面是379的時鐘、外設、IO、中斷的配置,這些不講,大家自己去熟悉。
接著是SPI的中斷函數配置及使能,這里用到的是SPIB及SPIBRXINT,在第一篇文章中有提到。

接著,我們看一張流程圖,這是我自己畫的,為了方便大家理解上手這個例程。

通過這個流程圖,基本上可以將例程的理解為:
- 設置CF,發送CF,死循環等待接收完成標志位;
- 延時3us后(CLB控制CLK),SPI外設接收;
- SPIFIFO接收滿,觸發RXINT中斷,中斷函數存BUF,置標志位;
- 解碼、校驗、賦值(位置信息要做蝶式交換,協議是這樣規定的,蝶式交換即字節的bit對稱交換)
- 延遲(給編碼器留空閑時間),反復循環
接著,是SPI中斷處理程序截圖:

最后是,while主循環的發收解碼部分,如圖:

好了,LIB版的例程分析就講這么多,其實看完我畫的流程圖,應該也就懂了,往深一點的,要大家自己去研究。
這個系列我會在頭條號同步更新,有空我會繼續更新下一篇,講LIB例程的應用開發,謝謝。