新增usart通訊不良的因素 — 2020/5/12
stm32f1xx晶元參考手冊 :stm32 reference manual (rm0008)
usart(universal synchronous/asynchronous receiver/transmitter),它名為通用非同步/同步收發器
它是現在廣泛應用的通訊協議之一,現在市面上的通訊模組都要靠usart傳送控制指令操控模組,收發資料。模組如:wifi模組、藍芽模組、乙太網控制器模組、nb-iot模組等等。
這種通訊也常常應用在產品的程式開發與除錯上,當程式執行到某個地方,或者接收到資料通過usart轉串列埠的方式,在電腦上觀察微控制器接收資料。
開始位資料位
奇偶校驗位
停止位1 bit
5/6/7/8bit
1bit
0.5/1/1.5/2bit
一般保證資料傳輸效率最大,一般傳送一幀資料就是10位:
開始位(1bit)+ 資料位(8bit) + 奇偶校驗位(0bit) + 停止位(1bit)
傳送速度可以選擇不同的波特率:
4800bps、9600bps、115200bps、128000bps、230400bps
備註:bps表示每秒鐘傳送多少位資料
下面來計算一下不同波特率傳輸速度:
9600bps / 10bit = 960 byte/s
(960byte/s)/ 1024 = 0.9375kb/s
在linux驅動學習當中,有時需要通過串列埠usart通訊傳送自己編寫的驅動檔案到開發板上(並不是唯一方法),所以轉換一下傳輸速度單位,僅供參考。
4800bps
9600bps
115200bps
0.46875kb/s
0.9375kb/s
11.25kb/s
通訊重要的一共有四根線:tx、rx、nrts、ncts
tx,傳送資料線 (db-9 的引腳3)
rx,接收資料線 (db-9 的引腳2)
nrts和ncts硬體資料控制流,其實也沒多大用處,只要雙方約定好相同的波特率、校驗位、資料位、停止位即可通訊。不過rs232介面標準需要這兩根線。
usart通訊要求對接交換**(跟上面圖表示的一樣)**,換句話說傳送端tx接收端rx,接收端rx端接tx傳送端。
每個微控制器都有它時鐘電路,每個時鐘電路都有它自己的不同頻率的晶振。
晶振頻率首先會經過鎖相環(pll)或是分頻器進行處理變成微控制器的系統時鐘,然後再經過鎖相環(pll)或是分頻器成為外圍裝置的時鐘源。
在這個過程中如果鎖相環和分頻器不能夠完整的分頻,則有可能出現usart實際的波特率不精確的問題出現。
解決辦法:傳送方與接收方最好選用能夠被微控制器完整分頻的晶振。
stm32f1串列埠通訊
stm32f4串列埠通訊
STM32USART串列埠通訊
問題描述 利用usart串列埠程式,實現pc與stm32通訊,計算機傳送資料,stm32接受後,再傳送給pc端 1.gpio埠配置 根據手冊 pa.9為tx 傳送 pa.10為rx 接受 因此 pa.9為復用推挽輸出,pa.10為浮空輸入,一行 搞定 void gpio config 2.配置usa...
stm32 USART 串列埠通訊
簡單區分同步和非同步就是看通訊時需不需要對外提供時鐘輸出 usart 有專門控制傳送的傳送器 控制接收的接收器,還有喚醒單元 中斷控制等等。使用 usart 之前需要向 usart cr1 暫存器的 ue 位置 1 使能 usart,ue 位用來開啟供給給串列埠的時鐘。傳送或者接收資料字長可選 8 ...
stm32 USART串列埠通訊總結
usart.h ifndef usart h define usart h include stdio.h include sys.h define usart rec len 200 定義最大接收位元組數 200 define en usart1 rx 1 使能 1 禁止 0 串列埠1接收 ext...