您当前的位置:五五电子网电子知识单片机-工控设备DSP/FPGA技术基于MSP430F449的数据存储和USB串行通信实现 正文
基于MSP430F449的数据存储和USB串行通信实现

基于MSP430F449的数据存储和USB串行通信实现

点击数:7783 次   录入时间:03-04 11:35:38   整理:http://www.55dianzi.com   DSP/FPGA技术
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
}

  //        发送单字符数据
void send _char(unsigned char data_out)    //    
{
  unsigned char i,tmp=0x80;
  for(i=0;i<8;i++)
  {
    if((data_out & tmp)>0)
    send_one();
    else
    send_zero();
    tmp/=2;
  }
}

  //         读单字符数据
unsigned char read_char(void) 
{
 unsigned char i,tmp=0x80;
 unsigned char data1=0;
for (i=0;i<8;i++)
{
   P2DIR&=0XFD;//SDA=1,  11111101
   IIC_Delay();//
   P2DIR&=0XFB;//SCL=1              FB="1111",1011
   IIC_Delay();
   if((P2IN&0x02)>0x00)
   {
     data1|=tmp;
   }
   P2DIR|=0X04;// SCL="0"
   IIC_Delay();
   tmp/=2;
 }
 return data1;
}

  //    &    检查应答信号模块
void iic_ACK(void)
{
 ack_flag=0x00;
 P2DIR&=0XFD;//SDA=1,             FD="1111",1101
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
IIC_Delay();
while((P2IN&BIT1)==BIT1);
P2DIR|=0X04;// SCL="0"
 IIC_Delay();
}

  //        拒绝应答模块
void iic_NACK(void)  & nbsp;       {
 P2DIR&=0XFD;//SDA=1,
 IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
 IIC_Delay();
 P2DIR|=0X02;// SDA="0"
 IIC_Delay();//         
}



www.55dianzi.com   //        写连续数据模块
void WriteNbyte(unsigned char *p,unsigned int addr,unsigned char number)   
{
     start_IIC();
    send_char(0xa2);
    iic_ACK();   
    send_char(addr/256);    //high address byte
    iic_ACK();
    send_char(addr%256);
    iic_ACK();       
           do
                {
                    send_char(*p);
                    p++;
                    iic_ACK();                 
                }
                while(--number);
         
    stop_IIC();
    delay(10);
}

  //        发送应答模块:ACK (LOW)
void S_ACK(void)          
{
 P2DIR|=0X02;// SDA="0"
 ;IIC_Delay();
 P2DIR&=0XFB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=0X04;// SCL="0"
 IIC_Delay();
}

  //        连续读字符模块
void ReadNbyte(unsigned char *p,unsigned int addr,unsigned char number)      
{
    start_IIC();
    send_char(0xa2);
    iic_ACK();
    send_char(addr/256);
    iic_ACK();
    send_char(addr%256);
    iic_ACK(); 
    start_IIC();
                 send_char(0xa3);
                 iic_ACK();
                   do
                    {
                        *p=read_char();
                        p++;
                       if(number!=1) 
                          S_ACK();        //send ACK
                    }
                    while(--number);
              iic_NACK();
    stop_IIC();
}

  数据的传输

  数据传输是存储在EEPROM中的数据到达计算机的有效途径,数据上传到计算机最常用的是串行(RS232)接口, 现在由于 USB 计数的不断成熟,通过USB可以方便快捷实现数据传输,而且可以满足速率和设备外观的要求,但是USB的驱动程序设计是比较复杂的工作,本例中使用简单的桥接电路,把UART接口的数据经过CP2102的桥接,直接实现数据的USB转换,从430F449异步串口输出的数据自动转化为符合USB协议的数据直接连接到计算机的USB口,上位机应用程序通过CP2102的驱动程序可以象操作串口一样直接读写端口数据。

  结论

  以上的硬件设计比较简单可靠,可以照搬到同类型的控制芯片上,软件代码也同样具有较好的移植性,只要把控制时钟和数据端口和程序软件设置相一致即可。

  参考文献:

  1、MSP430系列16位超低功耗单片机实践与系统设计《清华大学出版社》

  2、MSP430系列单片机接口计数及系统设计实例《北京航天航空大学出版社》

  3、MSP430系列单片机C语言程序设计与开发《北京航天航空大学出版社》



上一页  [1] [2] 


本文关键字:通信  DSP/FPGA技术单片机-工控设备 - DSP/FPGA技术