你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何向芯片的寄存器写入一系列值

[复制链接]
ctang 提问时间:2017-9-25 16:20 /
本帖最后由 ctang 于 2017-9-25 16:28 编辑

MCU用的是STM32L0系列。
有一个37053A的芯片。需要通过I2C通信,向该芯片的一系列寄存器,写初始值。

MCU做master,芯片做slave。


问:
①初始值存在哪?
②将值写入寄存器的代码,如何设计,是写一个值调用一次I2C读写函数,还是其他简洁操作?

1.jpg







收藏 评论13 发布时间:2017-9-25 16:20

举报

13个回答
MrJiu 回答时间:2017-9-25 16:22:20
你需要多看芯片的资料!!!
ctang 回答时间:2017-9-25 16:27:24
MrJiu 发表于 2017-9-25 16:22
你需要多看芯片的资料!!!

芯片资料告诉了,寄存器推荐值。

我的意思是,写500个值,用500行I2C写函数,还是有其他简化代码?
MrJiu 回答时间:2017-9-25 16:32:32
ctang 发表于 2017-9-25 16:27
芯片资料告诉了,寄存器推荐值。

我的意思是,写500个值,用500行I2C写函数,还是有其他简化代码? ...

用const数组!!!
ctang 回答时间:2017-9-25 16:52:49
MrJiu 发表于 2017-9-25 16:32
用const数组!!!

const数组能把值存下来。那地址呢,如何把地址与数据一对一的存下来?

有不有什么数据结构,像上位机语言的dictionary<key, value>类那样的。

MrJiu 回答时间:2017-9-25 17:04:27
ctang 发表于 2017-9-25 16:52
const数组能把值存下来。那地址呢,如何把地址与数据一对一的存下来?

有不有什么数据结构,像上位机语 ...

都可以。。。实际情况来看!!!
斜阳 回答时间:2017-9-26 09:07:57
芯片一般有burst write。把芯片寄存一下dump出来。修改过后。写回去。
ctang 回答时间:2017-9-26 10:36:55
斜阳__ 发表于 2017-9-26 09:07
芯片一般有burst write。把芯片寄存一下dump出来。修改过后。写回去。

问一下,芯片上点后,其寄存器的值是default值,还是都是0?

这款芯片有page和address,部分截图如下。你所说的一下dump出来,是指:
①用I2C读函数读取所有字节,保存在byte数组里面吗?
②然后按数组下标,修改要修改的寄存器?

2.JPG

下位机编程的思路,跟上位机好像不一样。如果是上位机的话,就很好用哈希表把地址和数据一对一保存下来,然后用for循环遍历所有元素。
ctang 回答时间:2017-9-26 13:23:20
MrJiu 发表于 2017-9-25 17:04
都可以。。。实际情况来看!!!

page、address、data如何关联保存,用什么数据结构?
斜阳 回答时间:2017-9-26 14:08:05
顺序保存
斜阳 回答时间:2017-9-26 14:11:31
ctang 发表于 2017-9-26 10:36
问一下,芯片上点后,其寄存器的值是default值,还是都是0?

这款芯片有page和address,部分截图如下。 ...

可以保存到一个结构体里,但要注意数据对齐。也可以顺序保存到一个数组里。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

ctang 回答时间:2017-9-26 17:31:31
斜阳__ 发表于 2017-9-26 14:11
可以保存到一个结构体里,但要注意数据对齐。也可以顺序保存到一个数组里。 ...

像这样吗?

  1. #define NUM_REG 0xFF
  2. typedef struct __map{
  3.      uint8_t page;
  4.      uint8_t address;
  5.      uint8_t byte;
  6. }Map;

  7. struct Map map1[NUM_REG]={
  8.    {0x00, 0x01, 0x34},
  9.    {0x00, 0x02, 0x56},
  10.    {0x00, 0x03, 0x33},
  11. };

  12. struct map *buf;
  13. buf=&map1[0];
复制代码
斜阳 回答时间:2017-9-27 10:16:43

可以。
ctang 回答时间:2017-9-27 16:34:19

OK. 多谢

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版