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