当前位置: 技术问答>如何读取i2c 上 ds1337时钟芯片 ~~~~~~~
iis7站长之家
I2c能否通过mmap读写
来源: 互联网 发布时间:2017-03-13
本文导语: 现在要做一个I2C的键盘的控制程序,我想直接在用户态写比较简单. #define I2C0_REG_BASE (0x01C22000) m_nFd = open("/dev/mem", O_RDWR); m_pBaseAddr = (i2c_regs_t *)mmap(0, sizeof(i2c_regs_t), PROT_READ | PROT_WRITE, MAP_SHARED, m_nF...
现在要做一个I2C的键盘的控制程序,我想直接在用户态写比较简单.
我的内核是2.6.33.rc4 板子OMAPL138, arm-926ejs+DSP, DDR内存起始区域 0xc0000000. 键盘控制芯片TCA8418
这种方法可不可以,
如果可以0x00000000 是不是要换成0xc000000(也不行)
还有我看有人说显存的例子,offset写a00000, 我把地址>>12 或>>8也不行.
#define I2C0_REG_BASE (0x01C22000)
m_nFd = open("/dev/mem", O_RDWR);
m_pBaseAddr = (i2c_regs_t *)mmap(0, sizeof(i2c_regs_t), PROT_READ | PROT_WRITE, MAP_SHARED, m_nFd,
(0x00000000+I2C0_REG_BASE ) >>0 );
在I2C 的读写函数中,总是死在红色的位置
// transmit data one byte at a time.
for (i = 0; i ICDXR = src_buffer[i];
// wait for data to be copied to shift register.
cnt = 0;
do
{
if (cnt++ > I2C_TIMEOUT)
{
// timed out waiting for data...reinit and return error.
//I2C_init(i2c, g_clock_rate);
// return (ERR_TIMEOUT);
}
} while (!CHKBIT(i2c->ICSTR, ICXRDY));
}
我的内核是2.6.33.rc4 板子OMAPL138, arm-926ejs+DSP, DDR内存起始区域 0xc0000000. 键盘控制芯片TCA8418
这种方法可不可以,
如果可以0x00000000 是不是要换成0xc000000(也不行)
还有我看有人说显存的例子,offset写a00000, 我把地址>>12 或>>8也不行.
|
都不支持你的设备,你有什么办法,你只能自己添加进去了。
|
不过你竟然用了内存映射,就不应该在使用read()和write()来读写数据了.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。