嵌(qian)入式(shi)學習筆記(ji):ARM串口(kou)通信(xin)詳解(jie)
時間(jian):2018-09-14 來(lai)源(yuan):未知(zhi)
一、串(chuan)行(xing)通信(xin)相關概(gai)念
單工,雙工,半雙工,全雙工
同步(有時鐘線),異步
波特(te)率,比特(te)率(bps)
二、用(yong)串口實現字符回顯
1> 確(que)定(ding)(ding)想用哪個COM口(自己定(ding)(ding),比如COM2)
2> 看(kan)板子(zi),找(zhao)到那(nei)個COM口,板子(zi)上印的(de)名字是CON7 3> 查看(kan)原理圖(tu)找(zhao)到CON7對(dui)應(ying)的(de)GPIO管(guan)腳
a> 看(kan)開發(fa)板的原理圖(tu),在開發(fa)板原理圖(tu)里面找CON7,發(fa)現對(dui)應的接線BUF_XuTXD2/UART_AUDIO_TXD
b> 查找BUF_XuTXD2/UART_AUDIO_TXD,發(fa)現它接的是開(kai)發(fa)板的CON4
c> 查找(zhao)XuTXD2/UART_AUDIO_TXD,發現接的是CON4的56腳(此信息來源可以咨詢硬件工程師,或者(zhe)自(zi)己從板子上找(zhao),可能(neng)需(xu)要把(ba)核心板和開發板分離才看得到)
e> 去(qu)核心板的原(yuan)理(li)圖去(qu)繼(ji)續(xu)找XuTXD2/UART_AUDIO_TXD,能找到它(ta)對應的是GPA1_1管腳
f> 同(tong)理(li)可得,還有一(yi)根線對應的是GPA1_0管腳
4> 查看(kan)(kan)芯(xin)片手冊,看(kan)(kan)GPA1是(shi)怎么用的
配置(zhi)GPA1CON就(jiu)可以了,需(xu)要把GPA1_0和GPA1_1配置(zhi)成UART模式,對(dui)應的是UART2
(通(tong)過學習芯片手(shou)冊(ce),或(huo)者通(tong)過參考別(bie)人的(de)(de)程序,或(huo)者參考芯片公司提供(gong)的(de)(de)參考方案,或(huo)者請教有經驗的(de)(de)人)
5> 查看(kan)芯(xin)片手冊,看(kan)UART2是怎么(me)用的(de),第28章
(通(tong)過學(xue)習芯(xin)(xin)片手(shou)冊(ce),或者(zhe)通(tong)過參考別人的(de)程序(xu),或者(zhe)參考芯(xin)(xin)片公司提供的(de)參考方案,或者(zhe)請教有經驗的(de)人)
6> 編寫程序
a> 先(xian)搭框架:簡單區分(fen)驅動(dong)部分(fen)和應用部分(fen)
驅動(dong)部(bu)分提(ti)供 init ReceiveFromUart SendToUart
應用部(bu)分:循環里(li)面去讀(du),讀(du)到就馬上顯示,從而實現回顯功(gong)能 b> 函數具(ju)體實現
init:1. 配置管腳為(wei)UART模式;2. 配置UART的(de)數據位,停(ting)止位,校驗(yan)位,波特(te)率等;
ReceiveFromUart:判(pan)斷接受(shou)緩(huan)存寄存器是不是包(bao)含的(de)有效(xiao)數據(ju),若有,讀,沒有就死等(deng)
SendToUart:判斷發(fa)送(song)緩存寄存器(qi)是不是空(kong),若空(kong),發(fa)送(song),不空(kong)就死等
main:死循環去讀ReceiveFromUart,讀到了就SendToUart c> 編譯(yi)程序 make
d> 下(xia)載(zai)編譯好(hao)的程序到板子(zi)的內(nei)存里(li)運(yun)行
串口實現字符回(hui)顯(xian):
需求分(fen)析(xi)結果:
一、配置
1 配置管腳為UART模式
2 串口數據格式(shi)(數據位(wei)奇偶校驗位(wei)停止位(wei))
3 uart收發數(shu)據的方式
4 波特率
二(er)、數(shu)據的(de)收發
1 數據從哪里收?哪里發(fa)?
2 收發動(dong)作觸發(何時收?何時發?)硬件(jian)接線(xian):
1、

可以從開發板上查到con7的收發數據
UART_AUDIO_TXD(發數據(ju))和UART_AUDIO_RXD(收數據(ju)),連(lian)接到
開發板con4上
2、

3、

在核心板con3上找到UART_AUDIO_TXD(發數據)和UART_AUDIO_RXD(收數據)
4、

在核心板U1A上找到(dao)串口收發數據(ju)接到(dao)GPA1_0和GPA1_1上查手冊配寄存器:
一:配置。
1、把GPA1_0和(he)GPA1_1配置成UART模(mo)式(shi)



2:串口的數(shu)據格式

3:UART收、發數(shu)據的方式



4:波特率
小數部分:

整數部分:


如何計算的:
已知:波特率(lv)要配(pei)成115200,時鐘頻率(lv)SCLK_UART=100M
公式:DIV_VAL = (SCLK_UART/(bps *16))- 1 芯片手冊上(shang)有
計算(suan):DIV_VAL= 100 000 000/115200/16 -1 = 53.25 整(zheng)數部分保存在UBRDIV=53
小數部(bu)分(fen)保存在 UFRACVAL2 = 0.25*16 = 4 二:數據收發
1、從哪里發,從哪里收?


2、什(shen)(shen)么時候收?什(shen)(shen)么時候發?



