標籤:
本科項目上需要DSP通過RS232串口串連四個裝置,可供使用的晶片串口只有一個。
方案一:利用手頭器件,簡單利用FPGA和max232電平轉換晶片採用片選方式設計
verilog代碼如下:
module demultiplexer1to4 (out0,out1,out2,out3,in,s2,s1,s0);output out0,out1,out2,out3;input in;input s0,s1,s2 ;reg out0,out1,out2,out3;[email protected](s0 or s1 or s2 or in)case({s2,s1,s0} ) 3‘b001: begin out0 <= in; out1 <= 1‘bz; out2 <= 1‘bz; out3 <= 1‘bz; end 3‘b011: begin out0 <= 1‘bz; out1 <= in; out2 <= 1‘bz; out3 <= 1‘bz; end 3‘b010: begin out0 <= 1‘bz; out1 <= 1‘bz; out2 <= in; out3 <= 1‘bz; end 3‘b110: begin out0 <= 1‘bz; out1 <= 1‘bz; out2 <= 1‘bz; out3 <= in; end 3‘b111: begin out0 <= in; out1 <= in; out2 <= in; out3 <= in; end default: begin out0 <= 1‘bz; out1 <= 1‘bz; out2 <= 1‘bz;out3 <= 1‘bz; endendcaseendmodule
優勢:可實現一對一發送和一對多發送;
缺點:需要器件、接線較多,不可靠。
出現問題:使用一段時間後,資料出現亂碼,分析是採用劣質max232晶片所導致,改用網申的美信原裝晶片,沒有繼續出現問題。但劣質max232晶片單獨使用電平轉換沒有問題。
方案二、接著我開始尋找整合晶片用以替代方案一,然後找到了成都國騰微電子有限公司的GM8125一擴五串口晶片.原理圖如下:
此晶片缺陷是不能夠一對多發送資料,只能一對一,倒也能滿足我使用需求。
經過了一個寒假回來,事情變的奇怪了,採用此轉換晶片發送的第一組資料出現亂碼,後續資料正常。
解決辦法,上電後先發送一組無用資料,跳過亂碼。當時因為時間關係沒有繼續查明原因。
簡單自製轉換電路(此電路不適用與全雙工系統工作):
RS232高電平: -3~ -15V
RS232低電平: +3~ +15V
RS232傳輸資料時空閑位為高電平,即-3~ -15V
發送資料時,USART_TXD(TTL或CMOS電平)為高電平,Q1截止,RS232_RXD電平為(0.7V(二極體壓降)+RS232_TXD),因RS232_TXD空閑時為高電平,則RS232_RXD也為高電平。
USART_TXD(TTL或CMOS電平)為低電平,Q1導通,RS232_RXD電平近似為VCC,表現在RS232電平上為低電平。
接收資料時,RS232_TXD為高電平,Q2截止,USART_RXD近似為VCC,表現在TTL或CMOS電平上為高電平。
RS232_TXD為低電平,Q2導通,USART_RXD電平接近為0,為低電平。
串口擴充方案+簡單自製電平轉換電路