天天看點

再造STM32---第十七部分:USART—序列槽通訊

本章參考資料:《STM32F4xx 中文參考手冊》 USART 章節。

學習本章時,配合《STM32F4xx 中文參考手冊》 USART 章節一起閱讀,效果會更佳,特别是涉及到寄存器說明的部分。

特别說明, 本書内容是以 STM32F42xxx 系列控制器資源講解。

17.1 序列槽通訊協定簡介:

實體層: 規定通訊系統中具有機械、電子功能部分的特性,確定原始資料在實體媒體的傳輸。其實就是硬

件部分。

協定層: 協定層主要規定通訊邏輯,統一收發雙方的資料打包、解包标準。其實就是軟體部分。

1-RS232标準:

RS232标準序列槽通訊結構圖:

再造STM32---第十七部分:USART—序列槽通訊

1、 RS232标準序列槽主要用于工業裝置直接通信

2、電平轉換晶片一般有MAX3232, SP3232

再造STM32---第十七部分:USART—序列槽通訊

RS-232 與 TTL 電平差別

再造STM32---第十七部分:USART—序列槽通訊

2-USB轉序列槽

USB轉序列槽通訊結構圖

再造STM32---第十七部分:USART—序列槽通訊

1、 USB轉序列槽主要用于裝置跟電腦通信

2、電平轉換晶片一般有CH340、 PL2303、 CP2102、 FT232

3、使用的時候電腦端需要安裝電平轉換晶片的驅動

3-原生的序列槽到序列槽

1、原生的序列槽通信主要是控制器跟序列槽的裝置戒者傳感器通信,不需要經過電平轉換晶片來轉換電平,直接就用TTL電平通信

2、 GPS子產品、 GSM子產品、序列槽轉WIFI子產品、 HC04藍牙子產品

序列槽資料包的基本組成

起始位: 由1個邏輯 0 的資料位表示

結束位: 由 0.5、 1、 1.5 戒 2 個邏輯 1 的資料位表示

有效資料:在起始位後緊接着的就是有效資料,有效資料的長度常被約定為 5、 6、 7 戒 8 位長

校驗位: 可選,為的是資料的抗幹擾性。

校驗方法分為:

1-奇校驗(odd)、 2-偶校驗(even)

3-0 校驗(space)、 4-校驗(mark)

5-無校驗(noparity)

奇校驗(odd) : 有效資料和校驗位中“ 1”的個數為奇數

比如一個 8 位長的有效資料為: 01101001,此時總共有 4個“ 1” ,為達到奇校驗效果,校驗位為“ 1” , 最後傳輸的資料将是 8 位的有效資料加上 1 位的校驗位總共 9 位

偶校驗(even) : 有效資料和校驗位中“ 1”的個數為偶數

比如一個 8 位長的有效資料為: 01101001,此時總共有 4個“ 1” ,為達到偶校驗效果,校驗位為“ 0” , 最後傳輸的資料将是 8 位的有效資料加上 1 位的校驗位總共 9 位

0 校驗是不管有效資料中的内容是什麼,校驗位總為“ 0” 。

1 校驗是校驗位總為“ 1” 。

無校驗就是資料包中不包含校驗位

17.2 STM32序列槽功能框圖講解:

再造STM32---第十七部分:USART—序列槽通訊

1-引腳 2-資料寄存器 3-控制器 4-波特率

STM32F4xx資料手冊—Pinouts and pin description。

ST每個系列的晶片都有一個資料手冊,裡面有引腳的詳細功能。

TX: 資料發送

RX: 是資料接收

SCLK: 時鐘,僅同步通信時使用

nRTS: 請求發送(Request To Send)

nCTS: 允許發送(Clear To Send)

資料寄存器—USART_DR: 9位有效,包含一個發送資料寄存器TDR和一個接收資料寄存器RDR。一個位址對應了兩個實體記憶體。

再造STM32---第十七部分:USART—序列槽通訊

USART_CR1: M, 0: 8bit, 1: 9bit

USART_CR2: STOP

USART_CR1: PCE、 PS、 PEIE

USART_SR : PE

USART_SR: TXE, Transmit data register empty

USART_SR: TC, Transmission complete

USART_CR1: TXEIE

USART_CR1: TCIE

USART_SR: RXNE, Read data register not empty

USART_CR1: RXNEIE

USART_CR1: UE、 TE、 RE

波特率—每秒鐘要發送多少資料

USART_BRR:波特率寄存器

USART_CR1: OVER8

再造STM32---第十七部分:USART—序列槽通訊

USARTDIV:無符号的定點數

FPCLK:序列槽的時鐘,注區分APB2和APB1兩條總線

OVER8:過采樣模式

例如:

USART: USART1,時鐘為90M

波特率: 115200

OVER8: 0, 16倍過才樣, BRR小數位有效

再造STM32---第十七部分:USART—序列槽通訊

7.3 STM32序列槽初始化結構體講解:

USART初始化結構體

typedef struct
{
uint32_t USART_BaudRate; //波特率 BRR
uint16_t USART_WordLength; //字長 CR1_M
uint16_t USART_StopBits; //停止位 CR2_STOP
uint16_t USART_Parity; //校驗控制 CR1_PCE、 CR1_PS
uint16_t USART_Mode; //模式選擇CR1_TE、 CR1_RE
// 硬體流選擇 CR3_CTSE、 CR3_RTSE
uint16_t USART_HardwareFlowControl;
} USART_InitTypeDef;      

同步時鐘初始化結構體

typedef struct
{
uint16_t USART_Clock; // 同步時鐘 CR2_CLKEN
uint16_t USART_CPOL; // 極性 CR2_CPOL
uint16_t USART_CPHA; // 相位 CR2_CPHA
uint16_t USART_LastBit; //最後一個位的時鐘脈沖 CR2_LBC
} USART_ClockInitTypeDef;      

7.4 程式設計時需要用到的固件庫函數:

1-配置GPIO為具體的第二功能

void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)

2-中斷配置函數

void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT,

FunctionalState NewState)

3-序列槽使能函數

void USART_Cmd(USART_TypeDef* USARTx,FunctionalState NewState)

4-資料發送函數

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)

5-資料接收函數

uint16_t USART_ReceiveData(USART_TypeDef* USARTx)

6-中斷狀态位擷取函數

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)

7.5 代碼講解:

硬體設計-1: TTL電平轉USB電平(使用時電腦上記得安裝CH340驅動)

再造STM32---第十七部分:USART—序列槽通訊

程式設計要點:

電腦端發送過來的資料是字元格式的

繼續閱讀