lanxin 发表于 2015-4-22 00:43:08

ATMGEA328如何读取和发送32位数据

我想用Arduino(采用AVR328)平台,从一个芯片里读取32位数据,这个数据是从一个AD实时转换过来的数据,现在要求通过SPI通讯,从一个类似于ADC芯片(但ADC芯片更强大)里读取32位的数据,保存到单片机内,然后这个数据需要参与运算的。我想知道如果把数据8位的传到单片机,要连续传4次,那么单片机这边怎么接受和存储这些数据(先不考虑时序问题)?
然后我们要对该芯片发送32位的命令又该怎么操作?谢谢!

lm4766 发表于 2015-4-22 11:06:15

这个不难啊

suoma 发表于 2015-4-22 13:34:31

AVR的话,一边接收,一边存储,它是流水线结构

lanxin 发表于 2015-4-22 13:52:03

我是新手,能不能给我提供一个简单的例程。就是从AD转换芯片的数据怎么分成3份保存到EEPROM中?谢谢

林定祥 发表于 2015-4-22 20:26:40

分四个字节送。

tsaiwn 发表于 2015-4-22 20:32:06

lanxin 发表于 2015-4-22 13:52 static/image/common/back.gif
我是新手,能不能给我提供一个简单的例程。就是从AD转换芯片的数据怎么分成3份保存到EEPROM中?谢谢


See:
http://www.arduino.cc/en/Reference/EEPROMWrite
http://www.arduino.cc/en/Reference/EEPROMRead

tsaiwn 发表于 2015-4-22 20:35:56


Using SPI to read ...
See
   http://www.arduino.cc/en/Tutorial/BarometricPressureSensor

darkorigin 发表于 2015-4-23 09:50:23

首先 单片机操作的基本单位是Byte也就是字节,所以32位整好是4字节
用整形数组读取就好了 然后用代码分离每个BIT位

古溪一梦 发表于 2015-4-25 17:18:24

void eeprom_write_short_int(unsignedshortAddress,unsigned short Date)
{
unsigned int DateL=Date;
unsigned int DateH=Date>>8;
EEPROM.write(Address,DateH);
EEPROM.write(Address+1,DateL);
}

unsigned short eeprom_read_short_int(unsignedshortAddress)
{
unsigned int DateH=EEPROM.read(Address);
unsigned int DateL=EEPROM.read(Address+1);
return ((DateH<<8)+DateL);
}
这是两个字节的,四个类似
页: [1]
查看完整版本: ATMGEA328如何读取和发送32位数据