STM32F207串列埠實驗記錄
處理器與外部裝置通訊的兩種方式:
-
並行通訊
傳輸原理:資料的各個位同時傳輸
優點:速度快
缺點:佔用引腳資源多 -
序列通訊
傳輸原理:資料按位順序傳輸
優點:佔用引腳資源少
缺點:速度相對較慢
序列通訊:
按照資料傳送方向分為
- 單工
- 半雙工
- 全雙工
序列通訊的通訊方式:
- 同步通訊
帶時鐘同步訊號傳輸
SPI,IIC通訊介面 - 非同步通訊
不帶時鐘同步訊號
UART(使用非同步收發器),單匯流排
常見的序列通訊介面:
通訊標準 | 引腳說明 | 通訊方式 | 通訊方向 |
---|---|---|---|
USRT(通用非同步收發器) | TXD:傳送端 、 RXD:接收端、GND:公共地 | 非同步通訊 | 全雙工 |
單匯流排(1-wire) | DQ:傳送/接收端 | 非同步通訊 | 半雙工 |
SPI | SCK:同步時鐘、MISO:主機輸入,從機輸出、MOSI:主機輸出、從機輸入 | 同步通訊 | 全雙工 |
I2C | SCL:同步時鐘、SDA:資料輸入/輸出端 | 同步通訊 | 半雙工 |
串列埠應該就是序列通訊介面
STM32的串列埠通訊介面:
UART:同步非同步收發器
USART:通用同步非同步收發器
不過207的手冊只找到了USART和I2C介面
UART/USART非同步通訊方式引腳連線方式:
- RXD :資料輸入引腳。資料接受。
- TXD :資料傳送引腳。資料傳送。
假如晶片1、2的串列埠都是TTL電平的,GND要先共地,傳送連線到接收。
電腦上的串列埠叫DB9,就是下圖這樣的:
假如將晶片和PC連線,DB9實際上是進行了一個電平轉換,經過電平轉換轉換成DB9這種9針的介面,STM32的晶片也需要RS232轉換器,轉成232電平,這樣才能連在一起。而不能直接將晶片的TTL直接連到電腦的DB9收發引腳,電平是不相容的。
UART/USART非同步通訊特點:
- 全雙工非同步通訊
- 分數波特率發生器系統、提供精確的波特率
- 可程式設計的資料字長度(8位或者9位)
- 可配置的停止位(支援1或者2位停止位)
- 可配置的使用DMA多緩衝器通訊
- 單獨的傳送器和接收器使能位
- 檢測標誌:接收緩衝器、傳送緩衝器空、傳輸結束標誌
- 多個帶標誌的中斷源。觸發中斷
- 其他:校驗控制,四個錯誤檢測標誌
串列埠通訊的過程:
接收–>
外部裝置一個位元一個位元地傳資料到RXD接收引腳,傳輸速度由波特率決定的,然後傳到序列輸入移位暫存器,傳輸完成後,一次性地將資料輸入到資料快取器,然後MCU核心就可以讀取這個資料。
傳送–>
MCU核心把要發的資料寫到輸出資料緩衝器,然後這個暫存器會一次把所有資料傳給序列輸出移位暫存器,然後把資料一位一位地按照定好的波特率傳輸給外部裝置,通過TXD引腳。
串列埠非同步通訊需要定義的引數
起始位
資料位(8或者9位)
奇偶校驗位(第9位)
停止位(1,15,2位)
波特率設定
補充
什麼是TTL電平、CMOS電平、RS232電平?它們有什麼區別呢?一般說來,CMOS電平比TTL電平有著更高的噪聲容限。
1、TTL電平標準
輸出 L: <0.8V ; H:>2.4V。
輸入 L: <1.2V ; H:>2.0V
TTL器件輸出低電平要小於0.8V,高電平要大於2.4V。輸入,低於1.2V就認為是0,高於2.0就認為是1。於是TTL電平的輸入低電平的噪聲容限就只有(0.8-0)/2=0.4V,高電平的噪聲容限為(5-2.4)/2=1.3V。
2、CMOS電平標準
輸出 L: <0.1Vcc ; H:>0.9Vcc。
輸入 L: <0.3Vcc ; H:>0.7Vcc.
由於CMOS電源採用12V,則輸入低於3.6V為低電平,噪聲容限為1.8V,高於3.5V為高電平,噪聲容限高為1.8V。比TTL有更高的噪聲容限。
3、RS232標準
邏輯1的電平為-3~-15V,邏輯0的電平為+3~+15V,注意電平的定義反相了一次。
相關文章
- QT實現串列埠助手中串列埠名的實時更新QT串列埠
- 打工筆記--------------------------c#實現串列埠通訊筆記C#串列埠
- (11.1)iic串列埠讀寫EEPROM實驗:EEPROM介紹串列埠
- 【GMT43智慧液晶模組】例程二:串列埠通訊實驗串列埠
- oracle實驗記錄 (flashback)Oracle
- oracle實驗記錄 (OMF)Oracle
- oracle實驗記錄 (NET)Oracle
- oracle實驗記錄 (audit)Oracle
- 沒有真實串列埠裝置時使用"虛擬串列埠驅動"除錯你的串列埠程式碼串列埠除錯
- 痞子衡嵌入式:串列埠除錯工具Jays-PyCOM誕生記(3)- 串列埠功能實現(pySerial)串列埠除錯
- 串列埠UART串列埠
- FPGA學習筆記03——UART串列埠FPGA筆記串列埠
- UART串列埠及Linux實現串列埠Linux
- web實現串列埠除錯助手Web串列埠除錯
- QT實現簡易串列埠助手QT串列埠
- Oracle Data Redaction實驗記錄Oracle
- oracle實驗記錄 (block cleanout)OracleBloC
- oracle實驗記錄 (dump undo)Oracle
- oracle實驗記錄 (inlist card)Oracle
- 大資料實驗記錄大資料
- 帶內串列埠 在串列埠中輸入命令串列埠
- Linux下串列埠通訊詳解(下)讀寫串列埠及關閉串列埠Linux串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 你真的瞭解串列埠嗎(示波器串列埠波形分析)串列埠
- 串列埠通訊利器:SerialPortStream庫詳解,輕鬆實現C#串列埠開發串列埠C#
- 【iCore3 雙核心板_FPGA】實驗二十五:NIOS II之UART串列埠通訊實驗FPGAiOS串列埠
- 啟明雲端分享| 86盒串列埠屏燒錄教程串列埠
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- 串列埠流控串列埠
- 串列埠通訊串列埠
- 串列埠blog串列埠
- 【iCore3 雙核心板】例程十八:USB_VCP實驗——虛擬串列埠串列埠
- Oracle檔案改名實驗記錄Oracle
- oracle實驗記錄 (選擇率)Oracle
- oracle實驗記錄 (dump logfile)Oracle
- oracle實驗記錄 (事務控制)Oracle
- oracle實驗記錄 (函式index)Oracle函式Index
- oracle實驗記錄 (bigfile tablespace)Oracle