串口擴展方案+簡單自制電平轉換電路


本科項目上需要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;

always@(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;    end
endcase
endmodule

優勢:可實現一對一發送和一對多發送;

缺點:需要器件、接線較多,不可靠。

出現問題:使用一段時間后,數據出現亂碼,分析是采用劣質max232芯片所導致,改用網申的美信原裝芯片,沒有繼續出現問題。但劣質max232芯片單獨使用電平轉換沒有問題。

方案二、接着我開始尋找集成芯片用以替代方案一,然后找到了成都國騰微電子有限公司的GM8125一擴五串口芯片.原理圖如下:

image

此芯片缺陷是不能夠一對多發送數據,只能一對一,倒也能滿足我使用需求。

經過了一個寒假回來,事情變的奇怪了,采用此轉換芯片發送的第一組數據出現亂碼,后續數據正常。

解決辦法,上電后先發送一組無用數據,跳過亂碼。當時因為時間關系沒有繼續查明原因。

 

簡單自制轉換電路(此電路不適用與全雙工工作):

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,為低電平。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM