热线电话:

厦门莫格电气自动化有限公司

主营:PLC可编程控制器模块,DCS卡件,ES...

商铺首页 > 新闻动态 > 51402497-200
厦门莫格电气自动化有限公司
8
企业等级: 普通会员
经营模式:
所在地区: 福建 厦门
联系卖家:    QQ在线咨询1982497648
手机号码:
公司官网:
公司地址:

51402497-200

发布时间:2019-08-15 08:24:58        

霍尼韦尔51402497-200

  
   
 在数据采集设备以及具有相关功能的仪器设计中,数据的存储和传输是一个非常重要的环节,本文在成功实践的基础上,介绍微控制器MSP430F449实现数据的采集后的数据存储及与上位机数据通信的相关内容。文中给出了实用的硬件电路和部分软件代码,详细讲解了在数据存储中需要注意的一些环节。
  在数据采集和测量仪器尤其是便携式设备中,数据存储和传输是不可避免的问题,近年来TI公司推出的低功耗微控制器MSP430,在仪器设计和制造领域引起巨大变革,新型控制器和大容量串行存储器的应用大大提高产品了的性能。本文主要解决两个问题
  1 解决经过MSP430采集后的数据与EEPROM24C256的数据接口问题,也就是数据存储问题;
  2 解决EEPROM与上位机(普通微机)的数据通信问题,也就是存储后的数据上传问题。
  首先对主要的集成电路做简单介绍
  MSP430F449简介
  MSP430F449是MSP430系列中的一种,MSP430系列是一种具有集成度高,功能丰富、功耗低等特点的16位单片机。它的集成调试环境Embedded Workbench 提供了良好的C语言开发平台。设计中基于程序的复杂性和程序容量大的要求选择了MSP430F449,这款芯片具有64K程序存储器,可以满足大部分复杂控制的需要;它的封装100-PIN QFP具有良好的互换性,与MSP430F437 、MSP430F435等芯片具有完全一致的管脚可以在程序量上进行合理选择。
  24C256简介
  24C256是支持I2C协议的串行EEPROM,容量32768字节。
24C256的管脚图
  以上是24C256的管脚图,其中A0,A1,A2构成存储器的物理地址,作为I2C总线上区分不同存储器的控制地址,可以在I2C总线上同时连接8个设备。 WP是写保护,高电平将禁止对器件的写操作;SCL和SDA是数据传输的控制线,其中SCL是时钟,SDA是双向数据线,用来完成数据的写入和读出,数据的传输按照I2C协议的要求由时钟端SCL配合共同完成。
  CP2102简介
  CP2102是USB到UART的桥接电路,完成USB数据和UART数据的转换,电路连接简单,数据传输可靠,把下位机串行数据转换成USB数据格式,方便实现数据通信,在上位机上通过运行该芯片的驱动程序把USB数据可以按照简单的串口进行读写操作编程简单,操作灵活。
图1 MSP430F449 接口原理图
  以上是MSP430F449与EEPROM以及CP2102的接口原理图,本文重点在于介绍数据采集过程完成以后的数据存贮和数据传输。
  数据的采集多种多样,可以经过片内的ADC转换器对模拟量进行采集,也可以通过独立的端口控制线对特殊的传感器比如温度传感器、压力传感器等进行数据转换,这不作为本文介绍的内容。本文主要是针对不同的采集过程完成后数据的存储和传输处理。
  数据自动存储的客观要求
  在许多测量过程中,不仅要求读取简单的仪表值,而且还需要对一段时间的数据进行科学的分析和处理以取得预测和分析的目的。在这种情况下,可能要求测量时间长,采集要求自动进行,无需人工值守,所以数据必须自动存储;另一个原因,采集数据的频率比较高,人的观察不能满足实际需要,这就要求对采集的数据进行有效的存储。
  集成电路合理选择
  有很多大容量的FLASH芯片已经得到广泛应用,但是这类芯片口线较多,需要占用较多的控制器资源,在控制外围器件多,接口复杂的情况下,特别是便携式仪器功能全、体积小,为了精简外围电路,在不影响存储量的情况下,具有I2C接口的串行EEPROM就成为了最佳选择。
  24C256程序控制原理
  24C256是具有I2C接口的512x64存储器,在数据的存储过程中除了遵循I2C协议必须的逻辑以外,一个最容易忽视并且最容易导致出错的问题就是存储地址问题。
  24C256的数据容量是32768,即可以存储的有效字节数。所以它的地址是16位整型数,有效范围是0~32768,数据字节为单位存储,在16位地址其中有效数据只有15位,低6(0~5)位地址表示的容量是0~63,然后连续的9(6~14)位地址表示页码的范围是0~511,在数据连续存储过程中,相同的页面内,存储地址自动完成累加过程;数据在不同页面的存储时,地址不能自动累加,如果不做正确处理,数据将从本页开始的地址重新开始覆盖已经存在的数据。例如,地址是63(二进制码111111)表示的是第0页的最后一个存储空间,地址64(二进制码1,000000)表示第1页最开始的存储空间。在当前存储地址是63时如果该器件处于连续存储模式下,数据将出错。
  原因是什么呢? 24C256支持数据的连续存储,最大的存贮数量是64即一页的内容,如果在地址选择上超过了这个限制,数据将会覆盖本页开始的位置重新存储,这就造成数据的错误,在使用上,虽然数据是分页存储的,但在形式上是连续数据,所以存储中不需要特意区分页地址和页内地址。
  在连续存储中,尽管数据每次存储的数量小于64,数据也可能出错,例如每次存储数量为11,地址的变化是0,11,22,33,44,55,66……,看上去没有什么问题,地址是按照每次11递增的,然而存储的结果还是出错了,原因是什么呢?在地址55开始的空间无法提供连续11个页内存储空间,当地址增加到63以后数据又从该页0地址重新开始,从而导致数据储存的错误。有效的解决办法是如果使用连续存储模式,地址的安排上要使存储块的大小为64,32,16,8,4,2此外都不能使用连续地址存储。如果数据采集中的有效数据位小于64,比如每次采集的结果是30字节,在连续存储模式下要按照32为单位存储,不足的字节补零处理。
  以下是24C256数据传输基本控制模块
  //         延时处理模块
void IIC_Delay(void)    
{
 _NOP();
 _NOP();
 _NOP();
}
  //         启动I2C模块 
void start_IIC(void)      //          启动I2
{
 P2OUT&=0f9;                    //设置P2输出
 P2DIR&=0FD;                   //SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101
P2DIR&=0FB;                   //SCL=1              FB="1111",1011
P2DIR|=002;                     // SDA="0"
P2DIR|=004;                     // SCL="0"
}
  //         停止I2C模块
void stop_IIC(void)       //          
{
 P2DIR|=002;//SDA=0
 IIC_Delay();
 P2DIR&=0FB;//SCL=1              FB="1111",1011
P2DIR&=0FD;//SDA=1,             上拉电阻使得P2.1为H,FD=1111,1101 
 IIC_Delay();
P2DIR|=004;// SCL="0" 
}
  //         发送 “ 0”模块
void send_zero(void)      //              
{
 P2DIR|=002;// SDA="0"
 IIC_Delay();
 P2DIR&=0FB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=004;// SCL="0" 
}
  //       发送  1模块
void send_one(void)       //           
{
 P2DIR&=0FD;//SDA=1,           上拉电阻使得P2.1为H,FD=1111,1101 
 IIC_Delay();
 P2DIR&=0FB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=004;// SCL="0" 
}
  //        发送单字符数据
void send _cha(unsigned char data_out)    //     
{
  unsigned char i,tmp=080;
  for(i=0;i<8;i++)
  {
    if((data_out & tmp)>0)
    send_one();
    else
    send_zero();
    tmp/=2;
  }
}
  //         读单字符数据
unsigned char read_cha(void)  
{
 unsigned char i,tmp=080;
 unsigned char data1=0; 
for (i=0;i<8;i++)
{
   P2DIR&=0FD;//SDA=1,  11111101
   IIC_Delay();// 
   P2DIR&=0FB;//SCL=1              FB="1111",1011
   IIC_Delay();
   if((P2IN&002)>000)
   {
     data1|=tmp;
   }
   P2DIR|=004;// SCL="0" 
   IIC_Delay();
   tmp/=2;
 }
 return data1;
}
  //    &    检查应答信号模块
void iic_ACK(void)
{
 ack_flag=000;
 P2DIR&=0FD;//SDA=1,             FD="1111",1101
 IIC_Delay();
 P2DIR&=0FB;//SCL=1              FB="1111",1011
IIC_Delay();
while((P2IN&BIT1)==BIT1); 
P2DIR|=004;// SCL="0" 
 IIC_Delay();
}
  //        拒绝应答模块
void iic_NACK(void)  & nbsp;       {
 P2DIR&=0FD;//SDA=1,
 IIC_Delay();
 P2DIR&=0FB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=004;// SCL="0" 
 IIC_Delay();
 P2DIR|=002;// SDA="0"
 IIC_Delay();//          
}
  //        写连续数据模块
void WriteNbyte(unsigned char *p,unsigned int addr,unsigned char number)    
{
     start_IIC();
    send_cha(0a2);
    iic_ACK();    
    send_cha(addr/256);    //high address byte
    iic_ACK();
    send_cha(addr%256);
    iic_ACK();        
           do
                {
                    send_cha(*p);
                    p++;
                    iic_ACK();                 
                }
                while(--number);
          
    stop_IIC();
    delay(10);
}
  //        发送应答模块:ACK (LOW)
void S_ACK(void)           
{
 P2DIR|=002;// SDA="0"
 ;IIC_Delay();
 P2DIR&=0FB;//SCL=1              FB="1111",1011
 IIC_Delay();
 P2DIR|=004;// SCL="0" 
 IIC_Delay();
}
  //        连续读字符模块
void ReadNbyte(unsigned char *p,unsigned int addr,unsigned char number)       
{
    start_IIC();
    send_cha(0a2);
    iic_ACK();
    send_cha(addr/256);
    iic_ACK(); 
    send_cha(addr%256);
    iic_ACK();  
SN1145-1AA01-0AA2
VF-SXN(400V 1.5KW)
31C075-503-4-00
1250-1476
MDS-B-CV-110
MDS-B-SP-185
MDS-B-SP-220
MDS-B-SVJ2-20
ACS800-01-0205-3+P901
FR-D720S-0.75K-CH
FR-E740-3.7K-CHT
1756-CN2R
1756-CNBR
1756-EN2T
1756-ENBT
1756-IF16
1756-IR6I
1756-L61
1756-L62
1756-L73
1756-OF6CI
1756-OF8
1756-PAR2
1756-RM
DCS-401-0405REV.A.1405A
SGMPH-15AAA21
2711-M3A18L1
2711P-RP1
E1401B
E8491B
GPIB-PCII/IIAISA-GPIBASSY18056-01的IEEE488.2
IC693CPU323
140ACI03000
140ACO13000
140CPS11420
140CPU11303
140DDI85300
140DDO35300
140NOE77101
8030-RRK-300
FBM01 P0400DA
FBM07B CM400YH
FBM09C CM400YK
FBM201 P0914SQ
FBM207B P0914WH
FBM242 P0916TA
P0400HH
P0500SR
P0700HU
P0916AA
P0916DB
P0916FH
P0916JS
P0916NG
4320
IC693ALG223D
FBM01 P0400DA
FBM07B  CM400YH
FBM09C  CM400YN
FBM201  P0914SQ
FBM207B P0914WH
FBM242 P0916TA
P0400HH
P0500SR
P0700HU
P0916AA
P0916DB
P0916FH
P0916JS
P0916NG
1C31224G01
EL3020
B7A-R3A38-M
B7AS-T6B6
MDLU2021N00
MICREX-F  F55
MICREX-F-FTLS
VX5A58D33N4
6ES7143-3BH00-0XA0
H25E-F1-SS-1024-ABZC-4469-LED-SC18-S
TC-PRS021
MICREX-F55
ETLB25-125
15-032014-01
直流调速1500A/690V 6RA7 093-4KV62-0 1
直流调速2000A/690V 6RA7 095-4KV62-0 1
A16B-1212-0950
6RA7093-4KV62-0
6RA7095-4KV62-0
140CPS11420
140CPS11420
ER-FC-2048D
HDS03.2-W100N-HA01-01-FW
HSM01.1-FW
SAFT-187CON
1523C4002
5500A5003
1179A12CR1BV-S
1479A22CR1BM-S
DSAI 130A
DSAI 146
DSDI 110AV1
DSDO 115A
ERN1120 1024 01L-FW
GPIB-USB-HS
SIM8-OUT-NPN
ARS2105
ARS2310
6SN1145-1AA01-0AA2
CIMR-G7A2011
CIMR-VB2A0056
AEEFXA-4P
AEFXA-4P-1HP
EVVF-YH-4P
XFR 35-35
TU831V1
1756-TBNH
3HAC020466-001
 IC693MDL645F
FR-E740
TSX08CD08R6AS
140ACI03000
140CPU43412A
140CPU43412U
140CRA21120
140CRA93100
140CRA93200
140CRP93100
140CRP93200
140DAI75300
140DDI84100
140DDO35300
140DDO84300
140EHC10500
140XTS00200
1B30035H01
1C31129G03  1C31132G01
MUMA042P1S+MLPET2310P
6SC6100-0NA11
6SC6100-0NA21
6SC6140-0FE00
6SC6100-0NA11
6SC6100-0NA21
6SC6140-0FE00
LSN1A
AT-DIO-32HS
AT-DIO-32HS
NAMC-11
NGDR-02
NINT-43
NIOC-01
PP15012HS(ABBN)5A
PP20012HS(ABBN)5A
A06B-0113-B075#0005
1756-IF6CIS
TSX P57253
 AT-DIO-32HS
IC200ALG265
IC200CBL002
IC200CHS022
IC200GBI001
IC200PWR102
IC647MPP101
IC647TDV700
IC660BBD024
IC660BCM501
IC660BLM506
IC697ACC720
IC697ACC724
IC697BEM731
IC697CHS790
IC697CMM711
IC697CMM742
IC697CPM790
IC697PWR711
EC20-2012BRA
EC20-4AD
EC20-4DA
HB4A0060
1756-BA2
1756-L62
386SX-CPU
3HAC12928-1
386SX-CPU
TSXP57253M
IQ DATA
395
TDS620B
IC693MDL645F
FC-9821X
1C31234G01
SST-PB3-CLX
2711-B5A5
6SE9621-7DD50ZC87
A06B-6090-H008
DKC02.3-040-7-FW
140ACI04000
140CPU11303
140NOE77101
FVR0.1C9S-2
JW-13BU
JW-1PU
140CPS11420
6FC5203-0AF05-0AB0
6FC5203-0AF22-0AA2
1756-A13
1756-CNB
1756-ENBT
1756-IB32
1756-IF8
1756-OB32
1756-OF4
1756-PB72
1794-IB32
1794-IE8
1794-TB2
1794-TB3
1794-TB32
IC200ALG240
IC200ALG320
IC200EBI001
IC200ERM002
IC200MDL241
IC200MDL742
IC200PWR102
T5N400 R320
3500/22M
3500/42M
3500/53
9200-01-05-10-00
1756-CNB/E
1756-ENBT/A
1756-L61
1756-PA75
140CPU43412U
990NAD23000
UP1161
EI813F
F1830F
TU810V1
TU812V1
8509C
1757-SRM
22A-B4P5N104
MDV60A0110-5A3-4-00
MDD112D-N-030-N2M-130GA0
A06B-0075-B503
A06B-6078-K811/L-13M
A06B-6127-H103
A06B-6151-H045#H580
SPEED REGULATOR  MAX SPEED 2
TSX08CD08R6AS
UGRMEM-02SNQ33 TG-7SVE
1FT5071-0AF71-1
1FT5102-0AG71-1
MAD130D-0200-SA-M0-AG0-05-N1
6EV3054-OFC
FBM201
FBM201
395
1326AB-B515EM2L
CIMR-G7B4015 400V 15KW(替代CIMR-HB4A0039FAA 400V 1
3150-MCM
H-PCP-J-141-D
MDLU2021N00
6AU1435-0AA00-0AA1
6ED1 052-1FB00-0BA6
6ED1055-1FB00-0BA1
140 ACI 030 00
140 CPU 434 12A
140 CPU 434 12U
免责声明
• 本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 304108043@qq.com
  • QQ在线咨询1982497648
  • 手机:
  • 联系我时务必告知是在产品网上看到的!

厦门莫格电气自动化有限公司

商铺|诚信档案

地址:

电话:传真:

免责声明:以上信息由会员自行提供,内容的真实性、准确性和合法性由发布会员负责,产品网对此不承担任何责任。产品网不涉及用户间因交易而产生的法律关系及法律纠纷, 纠纷由您自行协商解决。

风险提醒:本网站仅作为用户寻找交易对象,就货物和服务的交易进行协商,以及获取各类与贸易相关的服务信息的平台。为避免产生购买风险,建议您在购买相关产品前务必 确认供应商资质及产品质量。过低的价格、夸张的描述、私人银行账户等都有可能是虚假信息,请采购商谨慎对待,谨防欺诈,对于任何付款行为请您慎重抉择!如您遇到欺诈 等不诚信行为,请您立即与产品网联系,如查证属实,产品网会对该企业商铺做注销处理,但产品网不对您因此造成的损失承担责任!

联系:304108043@qq.com是处理侵权投诉的专用邮箱,在您的合法权益受到侵害时,欢迎您向该邮箱发送邮件,我们会在3个工作日内给您答复,感谢您对我们的关注与支持!

商铺首页 | 公司概况 | 供应信息 | 新闻动态 | 诚信档案 | 联系我们 |

厦门莫格电气自动化有限公司 电话: 传真: 联系人:

地址: 主营产品:PLC可编程控制器模块,DCS卡件,ESD系统卡件,振动监测系统卡件,汽轮机控制系统模块,燃气发电机备件

Copyright © 2025 版权所有: 产品网

免责声明:以上所展示的信息由企业自行提供,内容的真实性、准确性和合法性由发布企业负责。产品网对此不承担任何保证责任。

商盟客服

您好,欢迎莅临,欢迎咨询...