私のボードには、いくつかのレジスタを設定するI2Cデバイスがあります。カーネルドライバi2c開発
g_I2cDevFd = open("/dev/" UMAP_DEVNAME_I2C, O_RDWR, 0);
if (g_I2cDevFd < 0)
{
HI_FATAL_I2C("open I2C err.\n");
HI_I2C_UNLOCK();
return HI_ERR_I2C_OPEN_ERR;
}
どうすればいいですか?
最高の挨拶
私のボードには、いくつかのレジスタを設定するI2Cデバイスがあります。カーネルドライバi2c開発
g_I2cDevFd = open("/dev/" UMAP_DEVNAME_I2C, O_RDWR, 0);
if (g_I2cDevFd < 0)
{
HI_FATAL_I2C("open I2C err.\n");
HI_I2C_UNLOCK();
return HI_ERR_I2C_OPEN_ERR;
}
どうすればいいですか?
最高の挨拶
あなたの質問はあまり明確ではありません。しかし、LinuxのOSでのI2C通信のために、Interfacing_with_I2C_Devices
UMAP_DEVNAME_I2C
自体の定義では、あなたのデバイスパスを使用してください。すなわち、#define UMAP_DEVNAME_I2C "/dev/your_i2c_device"
それともカント編集UMAP_DEVNAME_I2C
すなわち、
char buff[100] = {0}; // size you can change according to your requirement
sprintf(buff,"/dev/%s",UMAP_DEVNAME_I2C);
g_I2cDevFd = open(buff, O_RDWR, 0);
/* Error check for open here*/
int addr = 0xFF; // 0xFF is Invalid, Give I2C address of your device
if (ioctl(g_I2cDevFd, I2C_SLAVE, addr) < 0) {
printf("Failed to acquire bus access and/or talk to slave.\n");
/* ERROR HANDLING; you can check errno to see what went wrong */
exit(1);
}
/* Write or Read*/
この質問はレビューキューにある場合
sprintf
を使用しています。おそらくカーネルのバージョンを述べるべきです。 – jwwLinux-3.4.67バージョン。 – 7758521