前言
本次總結(jié)主要是SCI通信的相關(guān)內(nèi)容。具體如下:
1、通信波特率的設(shè)置;
2、SCI通信時序:數(shù)據(jù)格式,信號的接收與發(fā)送時序;
3、SCI接收、發(fā)送的相關(guān)原理,包括查詢和中斷,F(xiàn)IFO等;
4、如何設(shè)計通信協(xié)議:MCU–上位機,MCU–MCU。
基礎(chǔ)知識
SCI:串行通信接口,串行通信技術(shù)的一種總稱;
UART:通用異步收發(fā)器,串行通信的一種協(xié)議;
RS232:串行通信的一種物理接口電氣標準。
1、串行通信:同步通信和異步通信
2、傳輸方式:單工、半雙工、全雙工
- 單工:單向傳輸,只需一根數(shù)據(jù)線;
- 半雙工:雙向傳輸,任一時刻只能發(fā)送或者接收,不能同時進行;
- 全雙工:雙向傳輸,可同時收發(fā)數(shù)據(jù)。
3、DSP中的SCI接口可以看做UART,輸出電平為TTL,一般和RS232接口連接,RS232電平不同于TTL,需要進行電平轉(zhuǎn)換,常用芯片如MAX232。
- 232電平:邏輯1:-3~15V;邏輯0:3 ~15V
- 標準TTL:邏輯1:2~5V;邏輯0:0 ~0.8V
1、時鐘使能
1.1 時鐘使能
時鐘使能為外設(shè)時鐘控制寄存器PCLKCR0的第10位(SCIA)或第11(位SCIB)或第5位(SCIC)。
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; // SCI-A
SysCtrlRegs.PCLKCR0.bit.SCIBENCLK = 1; // SCI-B
SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1; // SCI-C
1.2波特率
SCI的時鐘由LSPCLK和波特率選擇寄存器決定,波特率選擇寄存器為16位。波特率的設(shè)置分兩種情況:
- BRR = 0,波特率 = LSPCLK / ((BRR + 1)*8)
- BRR在1-65535之間,波特率 = LSPCLK / 16
2、SCI數(shù)據(jù)通信
2.1 數(shù)據(jù)格式
典型數(shù)據(jù)幀格式如圖Figure1-3所示:
- 1位起始位
- 1-8位數(shù)據(jù)位(LSB低位先行)
- 1個奇/偶校驗位
- 1位或2位停止位
所謂低位先行就是一個數(shù)據(jù)的地位在前 ,如0xAA,數(shù)據(jù)位則為:0101 0101
在這里說一下奇偶校驗,奇偶校驗檢查稱為垂直冗余檢查,具體指在每個發(fā)送字符中增加一個額外為使字符中的“1”的數(shù)目是奇數(shù)或偶數(shù)。
奇校驗:字符數(shù)據(jù)位中“1”的數(shù)目是偶數(shù),校驗位應(yīng)為“1”,使數(shù)目為偶數(shù);反之為“0”,如:1100 0011,數(shù)目為偶數(shù),校驗位則為1,即1100 0011 1;
偶校驗:字符數(shù)據(jù)位中“1”的數(shù)目是偶數(shù),校驗位應(yīng)為“0”,使數(shù)目為偶數(shù);反之為“1”,如:1100 0011,數(shù)目為偶數(shù),校驗位則為1,即1100 0011 0。
2.2 SCI數(shù)據(jù)流
由圖4-15可知發(fā)送和接收數(shù)據(jù)流。
- 一個發(fā)送器(TX)的相關(guān)寄存器:發(fā)送數(shù)據(jù)緩沖寄存器(SCITXBUF)和發(fā)送移位寄存器(TXSHF)
數(shù)據(jù)流向為:發(fā)送數(shù)據(jù)–>SCITXBUF–>TXSHF—>SCITXD發(fā)送出去; - 一個接收器(RX)的相關(guān)寄存器:接收數(shù)據(jù)緩沖寄存器(SCIRXBUF)和發(fā)送移位寄存器(RXSHF)
數(shù)據(jù)流向為:接收數(shù)據(jù)—>SCIRXD–>RXSHF–>SCITXBUF存取緩沖器;
接收數(shù)據(jù)直接通過接收數(shù)據(jù)緩沖器給變量即可。
以上的數(shù)據(jù)流都是在非FIFO模式下的,F(xiàn)IFO模式簡單來說是設(shè)置了一個緩沖機制,設(shè)置一個數(shù)據(jù)的緩沖深度,當發(fā)送或接受數(shù)據(jù)存到設(shè)置的深度時,再進行發(fā)送或接收。具體流向見圖4-15。
2.3、信號接收時序
信號接收時序如Figure1-8所示,具體時序為:
- 1-RXENA使能,接收數(shù)據(jù);
- 2- 數(shù)據(jù)到SCIRXD,檢測起始位;
- 3-數(shù)據(jù)從移位寄存器RXSHF到緩沖寄存器SCIRXBUF,產(chǎn)生中斷申請,RXRDY變高(1),已接收到一個新字符;
- 4-程序讀緩沖寄存器,RXRDY=0;
- 5-下一次字節(jié)到達SCIRXD,檢測啟動位,清除;
- 6-RXENA變?yōu)榈停?);
- 繼續(xù)想移位寄存器轉(zhuǎn)載數(shù)據(jù),但不移入緩沖寄存器。
以上是中斷接收,我們一般都是用中斷接收,中斷直接獲取緩沖寄存器的中的數(shù)據(jù)即可;而查詢接收則是通過查詢RXRDY標志位來進行接收,為高則接收到新字符,讀之后為0.
2.4 信號的發(fā)送時序
- 1-TXENA使能,發(fā)送數(shù)據(jù),初始時緩沖寄存器SCITXBUF為空,TXRDY為高(1),TX EMPTY為高(1);
- 2-寫數(shù)據(jù)到緩緩沖寄存器,不為空,TXRDY為低(0),EMPTY為低(0);
- 發(fā)送數(shù)據(jù)到移位寄存器TXSHF,緩沖寄存器為空,準備傳送第二個字符到緩沖寄存器,3-TXRDY為高(1),中斷請求;
- 3-TXRDY為高(1)時,程序?qū)懙诙€字符到緩沖寄存器,這時SCITXD開始發(fā)送第一個字符;寫入緩沖寄存器后,4-TXRDY為低(0);
- 發(fā)送完第一個字符,開始將第二個字符移入移位寄存器,移完5-TXRDY為高(1),開始發(fā)送第二個字符;
- 6-TXENA位變低,禁止發(fā)送數(shù)據(jù),,結(jié)束當前字符的發(fā)送;
- 7-第二個字符發(fā)送完成,緩沖寄存器為空,準備發(fā)送下一個字符。
以上為中斷發(fā)送,一般我們發(fā)送可以直接賦值給緩沖寄存器SCITXBUF即可。
3 通信協(xié)議
一般使用SCI通信(RS232通信)可以是MCU–上位機,MCU–MCU等,這里主要說這兩種,其實方法都一致。
1、如果傳輸?shù)臄?shù)據(jù)量不大的話,直接傳輸即可,也不需要進行精心的設(shè)計,規(guī)定好先后順序即可,然后發(fā)送和接收都按照順序進行即可;
2、如果傳輸?shù)臄?shù)據(jù)量的大的話,同時是全雙工進行的話,這時候就需要進行設(shè)計相關(guān)的傳輸準則了。如:
- 確定傳輸?shù)膶ο螅?/li>
- 確定雙方的通信地址;
- 確定傳輸數(shù)據(jù)的命令,不同命令對應(yīng)傳輸不同的數(shù)據(jù);
- 確定校驗的方法,每次指令傳輸?shù)臄?shù)據(jù)都進行校驗,驗證傳輸?shù)暮徒邮盏氖欠褚恢?,不一致則重新接收;
- 全部確定以后,即可按照地址、傳輸指令和校驗方法編寫程序進行驗證。
總結(jié)
此次的重點在于波特率的設(shè)置以及數(shù)據(jù)傳輸?shù)臅r序,至于通信協(xié)議只是寫了最基本的思路,需要根據(jù)具體的實際情況進行編寫相關(guān)的通信標準,然后設(shè)計程序。
-
串行通信
+關(guān)注
關(guān)注
4文章
579瀏覽量
35611 -
上位機
+關(guān)注
關(guān)注
27文章
945瀏覽量
55039 -
異步收發(fā)器
+關(guān)注
關(guān)注
0文章
36瀏覽量
10882 -
SCI
+關(guān)注
關(guān)注
1文章
56瀏覽量
20183 -
FIFO存儲
+關(guān)注
關(guān)注
0文章
103瀏覽量
6039
發(fā)布評論請先 登錄
相關(guān)推薦
量子力學(xué)經(jīng)典相關(guān)內(nèi)容附圖使之更易理解
單片機之驅(qū)動能力的相關(guān)內(nèi)容解析
GPIO中斷相關(guān)內(nèi)容 精選資料分享
簡單描述一下Arduino相關(guān)內(nèi)容
串口硬件和協(xié)議的相關(guān)內(nèi)容
高云半導(dǎo)體時序約束的相關(guān)內(nèi)容
淺析彈簧管壓力儀表的相關(guān)內(nèi)容
USB HID介紹及USB協(xié)議的相關(guān)內(nèi)容USB設(shè)備描述符資料概述
![USB HID介紹及USB協(xié)議的<b class='flag-5'>相關(guān)內(nèi)容</b>USB設(shè)備描述符資料概述](https://file.elecfans.com/web1/M00/6B/1C/o4YBAFvb-m2AWvHYAAENrdMXX9Q329.png)
CANOpen系列教程01_ 初識CAN與CANOpen及相關(guān)內(nèi)容
AXI_GP接口和AXI_HP接口的相關(guān)內(nèi)容
LDO相關(guān)內(nèi)容介紹
![LDO<b class='flag-5'>相關(guān)內(nèi)容</b>介紹](https://file1.elecfans.com/web2/M00/AE/6B/wKgZomVIWKCAHTC6AAC6IPl8hiY731.jpg)
評論