极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15425|回复: 8

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

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

使用道具 举报

发表于 2015-4-22 11:06:15 | 显示全部楼层
这个不难啊
回复 支持 反对

使用道具 举报

发表于 2015-4-22 13:34:31 | 显示全部楼层
AVR的话,一边接收,一边存储,它是流水线结构
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 13:52:03 | 显示全部楼层
我是新手,能不能给我提供一个简单的例程。就是从AD转换芯片的数据怎么分成3份保存到EEPROM中?谢谢
回复 支持 反对

使用道具 举报

发表于 2015-4-22 20:26:40 | 显示全部楼层
分四个字节送。
回复 支持 反对

使用道具 举报

发表于 2015-4-22 20:32:06 | 显示全部楼层
lanxin 发表于 2015-4-22 13:52
我是新手,能不能给我提供一个简单的例程。就是从AD转换芯片的数据怎么分成3份保存到EEPROM中?谢谢


See:
  http://www.arduino.cc/en/Reference/EEPROMWrite
  http://www.arduino.cc/en/Reference/EEPROMRead
回复 支持 反对

使用道具 举报

发表于 2015-4-22 20:35:56 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-4-23 09:50:23 | 显示全部楼层
首先 单片机操作的基本单位是Byte也就是字节,所以32位整好是4字节
用整形数组读取就好了 然后用代码分离每个BIT位
回复 支持 反对

使用道具 举报

发表于 2015-4-25 17:18:24 | 显示全部楼层
void eeprom_write_short_int(unsigned  short  Address,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(unsigned  short  Address)
{
  unsigned int DateH=EEPROM.read(Address);
  unsigned int DateL=EEPROM.read(Address+1);
  return ((DateH<<8)+DateL);
}
  这是两个字节的,四个类似
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 07:22 , Processed in 0.042649 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表