TMS320F28035使用學(xué)習(xí)系列分享(十四)SCI——基本收發(fā)配置
1 簡述
? ? ? ?串行通信接口(SCI)是C2000系列芯片常用到的一種通信模塊,其使用與其他MCU中UART模塊類似,為雙線異步串行端口。本篇是對TMS320F28035 SCI初始化配置及基本數(shù)據(jù)收發(fā)使用的總結(jié),針對相關(guān)文件函數(shù)進行調(diào)用與配置。
2 相關(guān)設(shè)置
? ? 相關(guān)引腳:
????F28035僅有一組SCIA,對應(yīng)引腳如下
????SCIA-RXD-->GPIO7??????????GPIO28
????SCIA-TXD-->GPIO12????????GPIO29
????相關(guān)寄存器:
????GPIO對應(yīng)寄存器
????工作方式控制寄存器:
????CCR:通信控制寄存器
????CTL1:控制寄存器1
????CTL2:控制寄存器2
????HBAUD:波特率高位寄存器
????LBAUD:波特率低位寄存器
????數(shù)據(jù)收發(fā)相關(guān)寄存器
????RXST:接收狀態(tài)寄存器
????RXEMU:接收仿真緩沖寄存器
????RXBUF:接收數(shù)據(jù)緩沖區(qū)
????TXBUF:發(fā)送數(shù)據(jù)緩沖區(qū)
? ? FIFO設(shè)置:
????FFTX:FIFO 發(fā)送寄存器
????FFRX:FIFO 接收寄存器
????FFCT:FIFO 控制寄存器
????PRI:FIFO 優(yōu)先級控制寄存器
????其中紅色標(biāo)記寄存器主要涉及初始化配置,藍色標(biāo)記寄存器主要涉及收發(fā)操作
????一些主要寄存器中功能如下
????FFTX寄存器
????15:SCIRST ?????? SCI復(fù)位
????14:SCIFFENA????? SCI使能
????13:TXFIFORESET?? FIFO發(fā)送復(fù)位
????12-8:TXFFST? ??? FIFO數(shù)據(jù)狀態(tài)(發(fā)送)
????7:TXFFINT??????? FIFO發(fā)送中斷標(biāo)志位
????6:TXFFINTCLR???? 清除FIFO發(fā)送中斷標(biāo)志位
????5:TXFFIENA?????? FIFO發(fā)送中斷使能
????4-0:TXFFIL?????? FIFO發(fā)送中斷等級設(shè)置? ??
????FFRX寄存器
????15:RXFFOVF?????? FIFO接收溢出標(biāo)志位
????14:RXFFOVRCLR??? 清除FIFO接收溢出標(biāo)志位
????13:RXFIFORESET?? FIFO接收復(fù)位
????12-8:RXFFST????? FIFO數(shù)據(jù)狀態(tài)(接收)
????7:RXFFINT??????? FIFO接收中斷標(biāo)志位
????6:RXFFINTCLR???? 清除FIFO接收中斷標(biāo)志位
????5:RXFFIENA?????? FIFO接收中斷使能
????4-0:RXFFIL?????? FIFO接收中斷等級設(shè)置
????FFCT寄存器
????15:ABD?????????? 自動波特率檢測位
????14:ABDCLR??????? 自動波特率檢測清除位
????13:CDC?????????? CDC校準(zhǔn)A檢測位
????7-0:FFTXDLY???????? FIFO傳輸延遲設(shè)置? ?
????CCR寄存器-數(shù)據(jù)長度-奇偶校驗位-奇/偶校驗-停止位長度
????7:STOPBITS? ?設(shè)置停止位
????6:PARITY???? 奇偶校驗方式
????5:PARITYENA? 奇偶校驗使能
????4:LOOPBKENA? 啟動回環(huán)測試
????3:ADDRIDLE_MODE???? 空閑位/地址位模式選擇
????2-0:SCICHAR???????? 字符長度控制位
????CTL1寄存器
????6:RXERRINTENA SCI接收錯誤中斷使能
????5:SWRESET??? SCI軟件復(fù)位
????3:TXWAKE???? 喚醒模式
????2:SLEEP????? 睡眠模式
????1:TXENA????? SCI發(fā)送使能
????0:RXENA????? SCI接收使能
?????CTL2寄存器
????7:TXRDY ???? 發(fā)送緩沖寄存器就緒標(biāo)志位
????6:TXEMPTY??? 發(fā)送空標(biāo)志位
????1:RXBKINTENA 接收緩沖區(qū)/中斷使能
????0:TXINTENA?? SCITXBUF寄存器中斷使能
????SCI波特率寄存器
????SCIHBAUD[7-0] SCILBAUD[7-0]
? ??RXBUF與TXBUF兩組寄存器分別存放收發(fā)數(shù)據(jù),皆存于低八位,其中RXBUF中還包括兩個只讀錯誤狀態(tài)標(biāo)志位
????因此SCI模塊初始化關(guān)鍵步驟為:
? ? (1)打開對應(yīng)外設(shè)時鐘
????(2)IO功能配置
????(3)FIFO初始化
????(4)配置數(shù)據(jù)發(fā)送協(xié)議(奇偶校驗、停止位、數(shù)據(jù)位數(shù)、波特率、對應(yīng)功能復(fù)位、使能使能等等)
????????波特率寄存器數(shù)據(jù)折算關(guān)系如下
????????注意這里有高低兩個寄存器,要將結(jié)果搬至對應(yīng)高低位的寄存器中方可運行。
3.基本配置總結(jié)
????????此處按照1位停止位、無奇偶校驗、八位、異步模式、空閑線路協(xié)議設(shè)置,其他功能配置類似,最后實現(xiàn)基本收發(fā)功能。
(1)打開對應(yīng)外設(shè)時鐘
(2)IO功能配置
(3)FIFO初始化
(4)配置數(shù)據(jù)發(fā)送協(xié)議
其中有關(guān)波特率設(shè)置
開啟SCI
(5)發(fā)送字符
(6)發(fā)送字符串
(7)接收字符
(8)數(shù)據(jù)傳輸
????????在主函數(shù)SCI初始化后發(fā)編寫發(fā)送代碼
????????發(fā)送字符后接收相應(yīng)字符,驗證代碼正確性
4.實驗結(jié)果驗證


????????通過該方式,我們可以使用選擇語句進行設(shè)計,將不同發(fā)送字符對應(yīng)不同所期望實現(xiàn)功能(如控制PWM開啟/停止、返回ADC采樣值等等),這樣便可通過上位機進行程序調(diào)試,也便于結(jié)果的實時儲存。