基于DSP的RS232串口连接设计方案
原标题:基于DSP的RS232串口连接设计方案
本科项目上需要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一扩五串口芯片。原理图如下:
此芯片缺陷是不能够一对多发送数据,只能一对一,倒也能满足我使用需求。
经过了一个寒假回来,事情变的奇怪了,采用此转换芯片发送的第一组数据出现乱码,后续数据正常。
解决办法,上电后先发送一组无用数据,跳过乱码。当时因为时间关系没有继续查明原因。
简单自制转换电路(此电路不适用与全双工工作):
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,为低电平。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。