我最近被授予了爲我們產品中的某些I2C器件編寫驅動程序的任務。我是一個完整的初學者,但我設法使用i2cset
和i2cget
以及smbus
的混合來控制一些LED。無法喚醒Atmel ATSHA204使用I2C
我最近的任務是從Atmel ATSHA204芯片的EEPROM中讀取7字節的序列號。我的第一份工作是喚醒芯片。數據表說如下
的喚醒條件要求要麼,該系統處理器手動驅動 SDA引腳爲低tWLO,或者爲0x00一個數據字節以 時鐘速率足夠慢發送這樣做SDA低至tWLO的最小時間。當設備喚醒時,正常的處理器I2C硬件和/或軟件可用於設備通信,直到包括I/O序列 ,以使設備回到低功耗(睡眠)模式。
因此,我似乎必須在tWLO時間手動將其中一個I2C引腳設置爲低電平,這顯然至少需要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
我猜我不確定最後一點,我該如何繼續寫下來,直到設備醒來?我很感謝這方面的幫助,因爲像這樣的低級編程對我來說是新的。
您可能對electronics.stackexchange.com更好的運氣。 – Brian