立即点击下载MAX232数据手册:MAX232数据手册(英文)
技术文章:
RS-232收发器的演进
集成电荷泵、高ESD保护、自动关断(AutoShutdown)、3.3V单电源供电、宽带、电平转换等,封装尺寸也在不断缩小,改进增强了器件的这些功能,有助于简化RS-232接口设计,减少器件数量,节省电路板面积。作为RS-232收发器产品的领导者,Maxim Integrated推出了超过158种具有增值功能的RS-232器件,以满足广泛的应用需求。
本应用笔记回顾了RS-232收发器的关键功能,从其发展过程看,RS-232收发器的演变也反映了串口通信的发展需求。
冗余收发器RS-232链路,提供±40V过压保护
并行RS-232收发器能够在对安全性要求苛刻的应用中提供双重可靠保证。但是,这种冗余收发器结构会为数据总线增加额外的负载。本应用笔记提供了一种解决上述问题的方案,即利用线保护器缓冲收发器的输入、输出。该方案还增添了过压保护功能。
应用技巧:
美信接口芯片MAX232在使用的时候须注意问题
MAX232在使用的时候须注意的问题:把MAX232的232端口和TTL端口搞反发现还能工作!只是有的电脑能行,有的电脑不行,这里详细介绍一下max232的使用方法,大家一定要注意了!
使用美信接口芯片MAX232时发现故障率比较高(答疑)
在使用MAX232时发现故障率比较高,做了21套板子,上电通信时,有一片在刚上电时就坏掉了,有一片用了几天在通信时坏掉了,还有一片使用过程中发现了一次严重发烫,断电后隔了一天再用发现又好了,而且当时发现通信出问题时,连着两块都出问题,但是换另外的一块又好着呢,现在想查查是片子自身的问题还是我使用的问题,请各位专家分析一下可能性。
关于美信接口芯片MAX232通信,上位机软件假死问题(答疑)
做了5块板子,然后用MAX232做的通信,通信程序已经在一块板子上面调试好了。因为有别的器件,我调试通信的时候就没有把所有元器件焊接上去。前几天我又重新焊了块板子,这次把所有元器件都焊上了。昨天调试了一下,能够通信,用的是串口调试助手。今天上午因为开会就没调试,下午开始调试的,用的是同事做的上位机的软件,发现上位机软件有假死的现象。
美信接口芯片MAX232串口通信问题详解
系统板实现功能:用MAX232实现串口通信故障现象:上位机给单片机发数据单片机可以识别,但单片机给上位机传数据时上位机却接不到,只有在每次断电的瞬间可以收到断断续续的数据。
美信接口芯片MAX232只能接受不能发送怎么回事(答疑)
各位兄弟不知道调试后遇到问题没?我焊接好后,自认为焊接技术还可以,就马上去测试,哪知道程序都下载不了,甚是郁闷啊,郁闷了好几天,检查错误,一检查,还真是有错误,MAX232竟然只能接受不能发送,这样的话当然就不能下载程序了,怎么办呢?
使用MAX232芯片多字节发送的问题解决方案(源程序)
#include
#include"display.h"
unsigned char Receive_Flag =0;
unsigned char REV_SITE =0;
unsigned char Receive_data[4] = {0,0,0,0};
unsigned char Send_data[4]= {0,0,0,0};
unsigned char disp_data[4] = {0, 0, 0,0};
void delay_50ms(unsigned int t)
{
unsigned int j;
for(;t>0;t--)
for(j = 6245;j>0;j--)
;
}
void delay_50us(unsigned int t)
{
unsigned char j;
for(; t>0; t--)
for(j=19; j>0;j--);
}
void Send_Pack( void)
{
unsigned char i;
unsigned char t =0;
Send_data[0] = 0xFE ;
Send_data[1] = 0x01 ;
Send_data[2] = 0x12;
Send_data[3] = 0xEF ;
for(i = 0;i<4;i++)
{
SBUF = Send_data;
TI=0;
delay_50us(20);
}
}
void main (void)
{
SCON = 0x50; // 工作在方式1
TMOD |= 0x20; //定时器1设置为方式2
PCON &= 0x7F; //波特率不加倍
TH1 = 0xFD; //波特率为9600
TL1 = 0xFD;
TR1=0; //关闭定时器1中断
TR1=1; //启动定时器1
ES=1;
EA =1;
P0 = 0xFF;
Display(disp_data);
while(1){
if(Receive_Flag){
Receive_Flag =0;
if(Receive_data[2] == 0xCC)
break;
}
}
while(1){
if(Receive_Flag) {
P0 = ~P0 ;
Receive_Flag =0;
}
Send_Pack();
disp_data[1] = Receive_data[1];
Display(disp_data);
delay_50ms(20);
}
}
void serial (void) interrupt 4
{
unsigned char RECEIVR_buffer;//接收数据
if(RI)
{
RI = 0;
RECEIVR_buffer= SBUF;
if( REV_SITE == 0) //起始位
{
if( RECEIVR_buffer == 0xFE)
{
Receive_data[REV_SITE++]= RECEIVR_buffer;//储存第一个字节
}
else {
REV_SITE = 0;
}
}
else if (REV_SITE >0 && REV_SITE < 3)
{
//接收第二字节,第三字节
Receive_data[REV_SITE++]= RECEIVR_buffer;
}
else if ( REV_SITE == 3)
{ //测试结束位
if(RECEIVR_buffer == 0XEF)
{
Receive_data[REV_SITE]= RECEIVR_buffer;
Receive_Flag = 1;
}
else
{
REV_SITE = 0;
}
}
else {
REV_SITE = 0; //缓冲区已满
}
}
if (TI)
{
TI = 0;
}
}
当删除延时代码后,发送数据分析如图:
当加上后,显示如图:
同时经过测试,当连续发送数据时,如果间隔过小(如<800ms)都如法正确收到。
测试中使用了unsigned char t=200;
while(--t);while(--t);
精确延时923us,也可以