异步收发器MAX3100应用记录

1、芯片简介:

MAX3100通用异步收发器是第一个专门用于小型单片机系统,可以通过SPI接口和微控制器通信。MAX3100可以用于RS232、RS485以及红外线的串口转换。 

2、硬件电路:

如图所示,将MAX3100的SPI接口分别接到微控制器上相对引脚,TX和RX接RS232或RS485芯片;

将IRQ引脚上拉后接到微控制器的IO上,可以用查询或中断方式进行读写数据;

将SHDN直接上拉,RTS和CTS悬空,晶振采用1.8432MHz.

3、软件设计:

以下软件设计时基于MSP430单片机

//MAX3100初始化函数
unsigned int SPI_Init(void)
{
  unsigned char i;
  unsigned int read_data;
  unsigned int write_data;
 
  write_data = 0xC409;//初始化设置命令,使能FIFO,使能接收中断,1位停止位,波特率19200 
  SCLK_low;  
  CS_low;
  for(i=0;i<16;i++)
  {       
    if( write_data & 0x8000)
      DOUT_high;
    else
      DOUT_low;    
    write_data = write_data << 1;
    delayus();
    SCLK_high;
    delayus();
    SCLK_low;
  }
  SCLK_low;
  CS_high;
  delayms(5);
  
  write_data = 0x4000;//read configuration from MAX3100
  SCLK_low;  
  CS_low;
  for(i=0;i<16;i++)
  {       
    if( write_data & 0x8000)
      DOUT_high;
    else
      DOUT_low;
    
    write_data = write_data << 1;
    delayus();
    SCLK_high;
//*******************************    
    read_data = read_data << 1;
    if( P5IN&0x04 )
      read_data = read_data|0x01;
    else
      read_data = read_data|0x00;    
//*******************************  
    delayus();
    SCLK_low;
  }
  SCLK_low;
  
  CS_high;
  delayms(3);
   
  return read_data;  
}
 
//通过SPI接口向MAX3100写数据函数
void SPI_write(unsigned char x)
{
  unsigned char i;
  unsigned int write_data;
  write_data = 0x8000 | x;
  SCLK_low;  
  CS_low;
  for(i=0;i<16;i++)
  {       
    if( write_data & 0x8000)
      DOUT_high;
    else
      DOUT_low;
    
    write_data = write_data << 1;
    delayus();
    SCLK_high;
    delayus();
    SCLK_low;
  }
  SCLK_low;
  CS_high;
  delayms(3);
  
}
//通过SPI接口向MAX3100读数据函数
unsigned char SPI_read()
{
  unsigned char i;
  unsigned char read_data;
  unsigned int write_data = 0x0000;
  SCLK_low;  
  CS_low;
  for(i=0;i<16;i++)
  {       
    if( write_data & 0x8000)
      DOUT_high;
    else
      DOUT_low;
    
    write_data = write_data << 1;
    delayus();
    SCLK_high;
 //*******************************    
    read_data = read_data << 1;
    if( P5IN&0x04 )
      read_data = read_data|0x01;
    else
      read_data = read_data|0x00;    
//*******************************  
    delayus();
    SCLK_low;
  }
  SCLK_low;
  CS_high;
  delayms(1);
  return read_data;
}
 

4、应用总结:

总体而言,MAX3100还是一个比较方便使用的串口扩展芯片,在遇到串口不足的情况下可以满足要求。

永不止步步 发表于02-18 09:42 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号