匯流排 UART串列埠通訊

2021-08-31 18:46:43 字數 2156 閱讀 9209

uart:universal asynchronous receiver/transmitter,通用非同步接收/傳送裝置

不知道資料什麼時候來

soc和pc等裝置都是ttl電平

0v 為 0

3.3v/5v為1

電平轉換模組的作用:

因為串列埠用於遠距離通訊,會影響到電路的電壓,如果還是如上面這樣採用ttl電平, 就會出現問題;

以下是常用的兩種匯流排:

r232匯流排

距離25公尺以內,全雙工;每根線,大小在正負3-15v之間

r485匯流排

距離1200公尺,半雙工;通過兩根線的電壓差表示大小

訊號協議(資料位、停止位、奇偶校驗)

一定時序(波特率)

首先進行電平的裝換,通知接收裝置準備接收資料

串列埠接收,採用中斷,盡量不在中斷裡處理資料,最好用乙個大的佇列來儲存接收的資料,如果硬體支援就用硬體的,否則就自己搭乙個軟體fifo;

串列埠傳送,根據需求選擇是否採用中斷,如果採用中斷,就像上面一樣採用佇列儲存資料,依次傳送;

如果直接傳送,需要確保在傳送過程中,不被打斷/搶占,導致傳送丟包,或者出錯(如,前面傳送010203040506,傳送了010203,然後中斷傳送070809101112;實際傳送就是010203-070809101112-040506)

uart.h

//快取最大值,最多一次性可接收的位元組數

#define uart_queue_max_size 80

//資料幀起始或結束資料

#define uart_queue_start_data 0xaa

#define uart_queue_end_data 0x55

#define uart_queue_start_lenght 0x10

//資料幀長度

#define uart_queue_data_frame_length 6

typedef struct uart_cmd_queue_

uart_cmd_queue_struct;

uart.c

/* 佇列fifo */

uart_cmd_queue_struct m_que;

/** * @brief 串列埠接收佇列復位

* @param none

* @retval none

*/void uart_queue_reset(void)

/** * @brief 存入乙個資料到串列埠接收佇列(fifo)中

* @param 存入的資料

* @retval none

*/void uart_queue_push(unsigned char l_dat)

}/**

* @brief 從串列埠接收佇列(fifo)中取出乙個位元組資料

* @param 取出的資料

* @retval none

*/void uart_queue_pop(unsigned char *l_dat)

}/**

* @brief 獲取串列埠接收佇列(fifo)的長度

* @param none

* @retval 接收佇列(fifo)的長度

*/unsigned int uart_queue_size(void)

/** * @brief 找出完整一幀指令

* @param 完整一幀指令

* @param 快取區大小

* @retval 完整指令長度

*/unsigned int uart_queue_find_cmd(unsigned char *buf)

buf[m_cmd_pos] = l_dat;

m_cmd_pos = 1;

break;

}default:

else

}m_cmd_pos++;

break;}}

return 0; //沒有形成完整的一幀

}

UART串列埠通訊

先簡單說說串列埠通訊 uart 我做的這個實驗只針對rs232標準,在fpga與上位機給出的rs232口之間通過電平轉換電路 最上面圖中的max232晶元 實現ttl電平與rs232電平之間的轉換。我們只關心rs232 tx和rs232 rx兩個訊號,rs232 tx是資料傳送埠,rs232 rx是...

UART串列埠非同步通訊

1.波特率 通訊裝置之間需要約定好波特率 每秒鐘傳送的二進位制位的個數,單位baud 常見的波特率有4800,9600,115200。2.通訊的起始訊號和停止訊號 usart協議空閒位預設為高電平,起始訊號拉低,停止位 0.5 1 1.5 2位的高電平 3.有效資料 起始位後緊著著就是傳輸的有效資料...

十 UART 串列埠通訊

uart 通用非同步收發器,通常用於微控制器和電腦之間以及微控制器和微控制器之間的通訊。在 uart 通訊過程中,是低位先發,高位後發的原則。波特率 傳送二進位制資料位的速率,習慣上用 baud 表示,即我們傳送一位二進位制資料的持續時間 1 baud。台式電腦 rs232介面 微控制器和pc進行通...