微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 89 I2C可否与MCU I2C通讯读写

89 I2C可否与MCU I2C通讯读写

时间:10-02 整理:3721RD 点击:
请教
如下代码所示, I2C读取 需要提供寄存器的地址 u8 reg,但 MCU 只有一个寄存器 没有寄存器 地址,那这个数据如何读取?

  1. static int stm8_i2c_read(struct stm8_chip *chip, u8 reg, u8 *val)
  2. {
  3.         int ret;

  4.         s32 read;
  5.         struct i2c_CLIent *client = chip->client;
  6.         reg += I2C_ADDR_OFFSET;
  7.         ret = i2c_smbus_write_byte(client, reg);
  8.         if (ret < 0) {
  9.                 mdelay(3);
  10.                 ret = i2c_smbus_write_byte(client, reg);
  11.                 if (ret < 0) {
  12.                         printk(KERN_ERR"%s: failed stm8 2x to write register %x\n",
  13.                                         __func__, reg);
  14.                         return ret;
  15.                 }
  16.         }

  17.         read = i2c_smbus_read_byte(client);
  18.         if (read < 0) {
  19.                 mdelay(3);
  20.                 read = i2c_smbus_read_byte(client);
  21.                 if (read < 0) {
  22.                         printk(KERN_ERR"%s: failed stm8 read fROM register %x\n",
  23.                                         __func__, reg);
  24.                 }
  25.                 return ret;
  26.         }

  27.         *val = (u8)read;
  28.         printk("%s: read from STM8 read=%x\n",__func__, read);
  29.         
  30.         return 0;
  31. }

复制代码





应该不能吧,都在Master mode .

不可以的。

学习学习学习

MCU STM8L151 支持 I2C 的4中模式,我们可以使用MCU 的从机读 模式,另外还有 主机读 主机写 从机写 三个模式,89看资料上说 指支持mastar read write,所以 理论上可以使用主机读 与 MCU 通讯,但那个寄存器 不明白了~

MCU STM8L151 支持 I2C 的4中模式,我们可以使用MCU 的从机读 模式,另外还有 主机读 主机写 从机写 三个模式,89看资料上说 指支持mastar read write,所以 理论上可以使用主机读 与 MCU 通讯,但那个寄存器 不明白了~
为什么不可以呢,smbs 与 I2C 协议 基本上是 兼容的

我的建议是如果数据量不大,可以通过中断来读。

这个肯定是 可以的 ,但  I2C读取 需要提供寄存器的地址 u8 reg,但 MCU 只有一个寄存器 没有寄存器 地址,那这个数据如何读取?

寄存器轮询试探

? 不太明白~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top