本文解答三問題:
1 串口是什么,
2 串口數據從哪里來,
3 串口數據去向何方。
術語:
1formula 對應公式
2parity even奇校驗 odd偶校驗
3TXE 發(fā)送數據寄存器空 (Transmitdataregisterempty)
4TC發(fā)送完成 (Transmissioncomplete)
5RXNE讀數據寄存器非空readdataregisternotempty
6 abandon 放棄
串口通訊中物理層:
1規(guī)定數據傳輸介質
協(xié)議層:
1規(guī)定傳輸的形式,統(tǒng)一雙方的數據打包方式,解包標準
電平標準:
1TTL 電平為3.3V 0v
2RS232 +15v到-15v
3 485電平 +2-+6表示1,-2--6表示0
1高低電平標準較高,用于抗干擾,以及抗靜電 使用峰峰值 進行抗干擾
3DB9端口上 大頭開始的端口為1腳,對于公頭 2/3分別為 R/T 對于母頭2/3為T/R
串口校驗位
1奇校驗 數據1對應的數量不為奇數,校驗位,補充一位1
2偶校驗 數據1對應的數據量不為偶數,校驗位,補充一位1
3無校驗 數據位中不包含校驗位
串口模式:
對應兩種模式,發(fā)送模式,以及接收模式 硬件控制流,
異步發(fā)送數據,數據發(fā)送幀中插入有效的標志位
polarity極性 phase相位
時鐘極性:
1 0總線空閑時CK引腳上保持低電平
1總線空閑時CK引腳上保持高電平
2部分串口上不支持時鐘極性的配置方式
時鐘相位 :
1 0 :在時鐘的第一個邊沿進行數據采集
2 1:在時鐘的第二個邊沿進行數據采集
總結:
時鐘中極性以及相位:方式保持一致即可,主機需要適配從機上通訊方式
LBCL:最后一位時鐘脈沖
1 0最后一位數據的時鐘脈沖不從CK輸出
2 1最后一位的時鐘脈沖會從CK輸出
deInit復位寄存器數值
編程之前,需要對庫中使用到函數進行查看,否則會導致編程中出現不知道如何使用函數這種問題
串口初始化:
1BSP BoardSupport Package板極支持包 硬件設計相關的代碼都被封裝在BSP中,代碼層次設計,進行抽象 單獨設計
2使用條件編譯,定義頭文件,主要用來防止多個文件中重復對此頭文件進行調用,之后對應變量被重復定義使用
3串口模式可以進行設置,可發(fā)送可接收,可兩者同時操作
4數據發(fā)送,調用庫中發(fā)送單字節(jié)的函數進行數據籌備,之后,通過while函數,對數據發(fā)送緩沖區(qū)是否為空進行判斷,非set為真
后期串口上數據處理,都需要進行檢查
5定義變量一定要寫上變量初始數值,防止變量初始化之后,對應的數值不正確且很難找到問題點
6字符串中進行最后一位數據判斷,可以對數據進行提取,之后判定數據是否為 ''判斷字符串中對應數據是否發(fā)送完成
7printf函數是一個標準的c語言函數 使用此函數需要使用 stdio.h頭文件
8printf函數會使用到fputc這個函數,代碼中需要對fputc函數進行實現,之后,可正常使用print函數進行數據打印輸出
10 putchar函數也可以正常使用 putchar(‘A’); C語言中標準庫對應的操作方式
11進行數據發(fā)送,不勾選16進制數據顯示的情況下,部分數據不能正常顯示
串口號進行切換
1使用宏定義對不同的串口進行區(qū)分,開啟指定宏定義實現串口中通訊需求
2不同的串口,需要使能的時鐘不同
3中斷函數名,來自啟動文件
4串口數據接收:
1串口接收中斷參數配置,開始對搶占優(yōu)先級進行配置
2后續(xù)串口上數據交互,必須對寄存器標志進行判斷 發(fā)送數據,接收數據標志
3使用getchar函數,單片機上可以接收外部數據
4 C語言中常規(guī)數據收發(fā)的方式,在單片機中需要進行特殊處理,考慮到實際工控應用,單片機中數據處理需要進行合理的解析
5串口中發(fā)送的數據需要區(qū)分是字符還是數字
6串口參數進行配置中,需要先對芯片中資源以及擁有的IO進行統(tǒng)計
7IO重映射主要針對芯片上IO合理布局做出的決策
8數據寄存器 DR 一個數據發(fā)送寄存器TDR 和一個接收數據寄存器RDR 一個地址對應兩個物理內存
9寄存器中,使用0 / 1映射到實際的數字上 設備上端口不夠使用的情況下,可使用此種方法
10單片機中時鐘為外設工作的心臟,要是時鐘不工作,外設上也就不會正常運轉
11串口使能開啟,需要UE =1 TE = 1 發(fā)送數據時,對應數據流向為DMA或者 cpu兩種渠道
12波特率 每秒鐘要發(fā)送多少數據 【二進制位】
串口中寄存器說明
TXE 用來判斷數據 發(fā)送數據寄存器 先將數據放置到發(fā)送數據寄存器中,之后將數據移動到發(fā)送移位寄存器中 對應到寄存器為txc為數據傳輸標志位
TC標志位對應的是數據發(fā)送完成
串口上時鐘進行計算,需要先確定時鐘來源
定時器以及串口上使用時鐘,分別掛載在APB1 APB2
備注:
1 后續(xù)設備使用GD32芯片,可以考慮提升芯片上串口波特率 ,或者使用同步串口進行數據傳輸
2 單片機中對小數進行表示,精度為bit位對應有效數據分之1 波特率寄存器表示精度 1 / 16
3 計算出波特率對應數值,小數部分數值 / 1 / 16對應數值為 小數部分對應的轉化數字,實際數據 /精度 =數量級
4 波特率相關參數計算,可以使用宏定義 ,使用公式自己進行計算,最終實現賦值
祝各位:前程似錦。
-
串口通訊
+關注
關注
1文章
258瀏覽量
24818 -
USART
+關注
關注
1文章
195瀏覽量
30766
原文標題:USART 基礎知識點復習
文章出處:【微信號:自豪三王,微信公眾號:自豪三王】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論