所有关于电路

ZMOD4410 - 具有MSP430FR2155的I2C

瑞恩和瑞恩斯特斯

螺纹启动器

瑞恩和瑞恩斯特斯

加入了2021年3月25日
5.
你好,

我目前正在使用传感器平台来测量IAQ。我使用的传感器之一是由瑞萨开发的ZMOD4410来测量TVOC。我对传感器的I2C遇到了麻烦。在数据表中,它表​​示实现的传输协议类似于传统的EEPROM,我不是很熟悉。我还拥有公司传感器提供的固件,我开发了I2C功能来编写和阅读,但我仍然存在问题,我想,当它掉下来时,它是因为我正在读取和写入价值的方式/传感器。

如果有人对传统EEPROM有任何经验,我在这里要求关于传输协议的提示/解释。此外,如果有人拥有/患有ZMod的I2C的任何问题,那么您可以帮助或者我们可以互相帮助。
m

McKenney.

加入2018年11月10日
115.
你究竟看到了什么症状?

我用i2c看到的两个最常见的goofs是(1)忘记使用8位(SLA字节)的总线上拉(2)用于从地址(您的代码应该说“UCBXI2CSA = 0x32;”)。

“EEPROM”参考不是错的,但它有点红鲱鱼。它遵循相当标准的寄存器读/写模型,(8位寄存器编号),具有自动增量。

你用的是什么平台?我不知道FR2155的任何现成的突破板,所以我猜这是一个定制板。

在TI站点上有一个FR2155示例,其中6个适用于I2C:
https://dev.ti.com/tirex/beplay体育下载不了explore/node?node=aonf7figxvb02jcarurwng__iogqzri__latest.
瑞恩和瑞恩斯特斯

螺纹启动器

瑞恩和瑞恩斯特斯

加入了2021年3月25日
5.
McKenney感谢回复。

这是一家定制董事会。我有公共汽车上拉,我在那辆公共汽车上有其他传感器,奴隶不同的奴隶,他们都在工作,所以上拉可能不是一个问题。从地址是正确的,因为我可以做一些命令,特别是我认为当我尝试读取它是正确的时,因为当我向zmod询问产品ID时,它让我回到正确的产品。

主要问题是当我尝试将配置写入某个地址时,在这种情况下,我想向数据发送2个字节,并在第二个字节A从传感器中获取一个Nak,这导致我相信ZMOD没有收到特定的字节。

一个问题,你有没有使用过这个传感器,你是否可以访问他们的固件?
m

McKenney.

加入2018年11月10日
115.
我之前没有使用过这个传感器,但我已经使用了许多I2C传感器。用户指南和(我认为)示例代码位于注册墙后面,所以我还没有看到它们。

数据表中有一个注释(第11章,第2段),这表明一般来说,您通常不应该写入寄存器;我不知道这意味着只读(NACK可能的原因)。它确实建议您可以编写/读回寄存器0x88-8b;你试过了吗?
瑞恩和瑞恩斯特斯

螺纹启动器

瑞恩和瑞恩斯特斯

加入了2021年3月25日
5.
是的,我有,我有很多例子。

1.发送数据= [0x88,0x01]只有ACK,我可以在访问0x88时读取数据,但我也收到了一个0x00 nak,也许是因为我只是试图阅读一个字节。

2.发送数据= [0x88,0x01,0x02],我在0x01上获得ACK,0x02上的NAK,我读取与示例1相同

3.发送数据= [0x88,0x89,0x01],我得到ACK,我可以读取0x89和0x01

4.发送数据= [0x88,0x89,0x01,0x02],我得到了除0x02之外的所有ACK,我读取0x89和0x01

5.发送数据= [0x88,0x01,0x89,0x02],再次在0x02和i读取0x01和0x89之外的所有ACK。
m

McKenney.

加入2018年11月10日
115.
HM。我没有看到一个明显的模式,除了它没有nacks 0x02字节(或可能是任何偶数的字节?),这将是一个非常异常的症状。你偶然有一个范围追踪吗?

这是黑暗中的拍摄:你知道你在运行公共汽车有多快吗?如此:如果你用brw划分smclk,你得到了什么速度?在许多情况下,BRW非常小,因此舍入错误很容易推动400kHz的速度。大多数设备都在这里公平宽容,但每个I2C设备似乎都有自己的怪癖。

[我前进并在瑞萨注册,但是要获得任何(4x)固件包,我需要一个销售人员名称,我没有,这是因为,我不是客户。EVK代码似乎是所有PC端。]
瑞恩和瑞恩斯特斯

螺纹启动器

瑞恩和瑞恩斯特斯

加入了2021年3月25日
5.
我有来自逻辑分析仪的范围迹线,不确定是否有帮助,但我会把它们放在这里。

现在,当我尝试发送两个或更多字节并尝试读取它们之后,我有不同的行为,SDA只给出0x00,然后是ACK,它下降,永远不会备份。起初我认为这是时钟低超时,但中断标志没有设置,所以我忘了那种方法。

就总线速度而言,我有16 MHz的SMCLK和BRW,我假设是数据速率为100 kbps,我认为这款微量支持比这更高。因此,提供16MHz / 100kbps = 160kHz的速度。如果我做得正确,你对此是什么意思?

附件

m

McKenney.

加入2018年11月10日
115.
如果BRW = 100和SMCLK = 16MHz,则总线速度为16MHz / 100 = 160kHz。双方都声称能够实现这一目标。

UCCLTO超时适用于时钟(SCL)。使用SDA坐下,就像有点不寻常(通常你会在数据/ ACK切换期间看到一点点上勾),但它不是非法的。在该示例中,主设备(您的代码)在控件中,并且可以在选择时停止,因此SDA-Low不会永远不会继续。我想到它显示为0x00,因为您尚未在0x89写作中尚未成功。

有第二个写字节得到Nack-ed似乎奇怪,因为他们明确说(1)你可以编写多个字节和(2)你可以将你想要的东西写入0x88-0x8b。似乎有一些我没有看到的其他规则。
瑞恩和瑞恩斯特斯

螺纹启动器

瑞恩和瑞恩斯特斯

加入了2021年3月25日
5.
这也是我在想的,还有一些没有明确说的规则。我认为是什么,它与地址指针有关。因为它在数据表中说:“必须在I2C操作期间设置此地址指针”,您是否对此有任何想法/提示?
m

McKenney.

加入2018年11月10日
115.
“必须在I2C操作期间设置此地址指针”
“必须在I2C期间设置此地址指针操作。“这是非常标准的,因为在读取操作期间没有办法编写寄存器号。即,将一块状态(寄存器索引)写入设备,然后从那里读取读取读取。

除了某种数据依赖性之外(哪些数据表第11章主持人而不是这种情况,还可以尝试编写0x08或0xff)我可以想到的唯一其他事情是可以将总线信号作为分析仪完整地整洁索赔。尝试的一件事是减慢公交车的速度下降 - 50kHz,甚至10kHz - 由于慢速总线通常更宽容信号异常。如果这改善了告诉你一些事情的事情。
最佳