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