gpt4 book ai didi

无法使用 I2C 唤醒 Atmel ATSHA204

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:45 25 4
gpt4 key购买 nike

我最近接到了为我们产品中的一些 I2C 设备编写驱动程序的任务。我在这方面完全是个初学者,但我已经设法混合使用 i2cseti2cget 以及 smbus 来控制一些 LED。

我最近的任务是从 Atmel ATSHA204 的 EEPROM 中读取一个 7 字节的序列号。芯片。我的第一份工作是唤醒芯片。数据表说这是按如下方式完成的

The Wake condition requires either that the system processor manually drive the SDA pin low for tWLO, or that a data byte of 0x00 is transmitted at a clock rate sufficiently slow that SDA is low for a minimum period of tWLO. When the device is awake, the normal processor I2C hardware and/or software can be used for device communications up to and including the I/O sequence required to put the device back into low-power (sleep) mode.

所以我似乎必须手动将其中一个 I2C 引脚设置为低电平一段时间 tWLO,这显然至少需要 60 微秒才能使用传统的 I2C 调用。我真的不确定这是如何完成的,理想情况下我会在 C 中执行此操作,那么下面的工作会有一些变化吗?

int file;     
file = open("/dev/i2c-0", O_RDWR);
if (file < 0)
{
exit(1);
}

int addr = 0x64; // Address of LED driver

if (ioctl(file, I2C_SLAVE, addr) < 0)
{
return 1;
}

write(file, 0x00, 1); // write a 0x00 to the chip to wake it up

我想我不确定最后一点,我如何继续写入直到设备被唤醒?我将不胜感激,因为像这样的低级编程对我来说是新的。

最佳答案

您不想将 0x00 传递给 write 函数。该参数不是值,它是指向包含数据的缓冲区的指针。您需要知道 I2C 运行的时钟速度。这将决定需要写入多少字节的 0x00 才能满足唤醒所需的持续时间。

关于无法使用 I2C 唤醒 Atmel ATSHA204,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com