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