當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:ARM串口通信詳解
一、串行通信相關(guān)概念
單工,雙工,半雙工,全雙工
同步(有時(shí)鐘線),異步
波特率,比特率(bps)
二、用串口實(shí)現(xiàn)字符回顯
1> 確定想用哪個(gè)COM口(自己定,比如COM2)
2> 看板子,找到那個(gè)COM口,板子上印的名字是CON7 3> 查看原理圖找到CON7對(duì)應(yīng)的GPIO管腳
a> 看開(kāi)發(fā)板的原理圖,在開(kāi)發(fā)板原理圖里面找CON7,發(fā)現(xiàn)對(duì)應(yīng)的接線BUF_XuTXD2/UART_AUDIO_TXD
b> 查找BUF_XuTXD2/UART_AUDIO_TXD,發(fā)現(xiàn)它接的是開(kāi)發(fā)板的CON4
c> 查找XuTXD2/UART_AUDIO_TXD,發(fā)現(xiàn)接的是CON4的56腳(此信息來(lái)源可以咨詢硬件工程師,或者自己從板子上找,可能需要把核心板和開(kāi)發(fā)板分離才看得到)
e> 去核心板的原理圖去繼續(xù)找XuTXD2/UART_AUDIO_TXD,能找到它對(duì)應(yīng)的是GPA1_1管腳
f> 同理可得,還有一根線對(duì)應(yīng)的是GPA1_0管腳
4> 查看芯片手冊(cè),看GPA1是怎么用的
配置GPA1CON就可以了,需要把GPA1_0和GPA1_1配置成UART模式,對(duì)應(yīng)的是UART2
(通過(guò)學(xué)習(xí)芯片手冊(cè),或者通過(guò)參考別人的程序,或者參考芯片公司提供的參考方案,或者請(qǐng)教有經(jīng)驗(yàn)的人)
5> 查看芯片手冊(cè),看UART2是怎么用的,第28章
(通過(guò)學(xué)習(xí)芯片手冊(cè),或者通過(guò)參考別人的程序,或者參考芯片公司提供的參考方案,或者請(qǐng)教有經(jīng)驗(yàn)的人)
6> 編寫(xiě)程序
a> 先搭框架:簡(jiǎn)單區(qū)分驅(qū)動(dòng)部分和應(yīng)用部分
驅(qū)動(dòng)部分提供 init ReceiveFromUart SendToUart
應(yīng)用部分:循環(huán)里面去讀,讀到就馬上顯示,從而實(shí)現(xiàn)回顯功能 b> 函數(shù)具體實(shí)現(xiàn)
init:1. 配置管腳為UART模式;2. 配置UART的數(shù)據(jù)位,停止位,校驗(yàn)位,波特率等;
ReceiveFromUart:判斷接受緩存寄存器是不是包含的有效數(shù)據(jù),若有,讀,沒(méi)有就死等
SendToUart:判斷發(fā)送緩存寄存器是不是空,若空,發(fā)送,不空就死等
main:死循環(huán)去讀ReceiveFromUart,讀到了就SendToUart c> 編譯程序 make
d> 下載編譯好的程序到板子的內(nèi)存里運(yùn)行
串口實(shí)現(xiàn)字符回顯:
需求分析結(jié)果:
一、配置
1 配置管腳為UART模式
2 串口數(shù)據(jù)格式(數(shù)據(jù)位奇偶校驗(yàn)位停止位)
3 uart收發(fā)數(shù)據(jù)的方式
4 波特率
二、數(shù)據(jù)的收發(fā)
1 數(shù)據(jù)從哪里收?哪里發(fā)?
2 收發(fā)動(dòng)作觸發(fā)(何時(shí)收?何時(shí)發(fā)?)硬件接線:
1、
可以從開(kāi)發(fā)板上查到con7的收發(fā)數(shù)據(jù)
UART_AUDIO_TXD(發(fā)數(shù)據(jù))和UART_AUDIO_RXD(收數(shù)據(jù)),連接到
開(kāi)發(fā)板con4上
2、
3、
在核心板con3上找到UART_AUDIO_TXD(發(fā)數(shù)據(jù))和UART_AUDIO_RXD(收數(shù)據(jù))
4、
在核心板U1A上找到串口收發(fā)數(shù)據(jù)接到GPA1_0和GPA1_1上查手冊(cè)配寄存器:
一:配置。
1、把GPA1_0和GPA1_1配置成UART模式
2:串口的數(shù)據(jù)格式
3:UART收、發(fā)數(shù)據(jù)的方式
4:波特率
小數(shù)部分:
整數(shù)部分:
如何計(jì)算的:
已知:波特率要配成115200,時(shí)鐘頻率SCLK_UART=100M
公式:DIV_VAL = (SCLK_UART/(bps *16))- 1 芯片手冊(cè)上有
計(jì)算:DIV_VAL= 100 000 000/115200/16 -1 = 53.25 整數(shù)部分保存在UBRDIV=53
小數(shù)部分保存在 UFRACVAL2 = 0.25*16 = 4 二:數(shù)據(jù)收發(fā)
1、從哪里發(fā),從哪里收?
2、什么時(shí)候收?什么時(shí)候發(fā)?