首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字节范例c库的用法

字节范例c库的用法
EN

Stack Overflow用户
提问于 2011-11-14 19:12:40
回答 2查看 176关注 0票数 0

我想在‘字节范例’的I2C express设备上使用I2C C库。这是byte范型网站中的示例API。

代码语言:javascript
复制
//
// Executing I2C write transfer    
//
pDataWr[0] = 0x12;
pDataWr[1] = 0x34;
printf("\nWriting 0x%02X to address 0x%02x...\n", pDataWr[1], pDataWr[0]);
i2c_CmdBufAppend(2, 0x50, 1, 2, (char *)pDataWr, true, true); // Cmd = 2       : I2C write
                                                             // Address = 0x50
                                                             // AddrType = 1  : 7-bit address
                                                             // Length = 2    : 2 byte payload
                                                             // pDataWr       : buffer with 2 bytes payload (0x1234)
                                                             // STA = true    : generate start
                                                             // STO = true    : generate stop

i2c_RunMaster();
i2c_CmdBufDeleteAll();

这是什么意思?它写了什么,写在哪里?它与下面给出的API有什么不同?

代码语言:javascript
复制
//
// Executing dummy write to set EEPROM address
//
printf("\nExecuting dummy write to set EEPROM address...\n");
pDataWr[0] = 0x12;
i2c_CmdBufAppend(2, 0x50, 1, 1, (char *)pDataWr, true, true); // Cmd = 2       : I2C write
                                                             // Address = 0x50
                                                             // AddrType = 1  : 7-bit address
                                                             // Length = 1    : 1 byte payload
                                                             // pDataWr       : buffer with 1 byte payload (0x12)
                                                             // STA = true    : generate start
                                                             // STO = true    : generate stop
i2c_RunMaster();
i2c_CmdBufDeleteAll();

我已经浏览了byte范例库文档,但那里的信息非常有限。感谢您的帮助,提前感谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-15 03:34:31

在谷歌上快速搜索I2C规范会得到这样的结果:http://i2c2p.twibright.com/spec/i2c.pdf

我已经很久没有使用i2c设备了(我必须为一个专门的芯片组编写自己的驱动程序)。

执行代码的芯片是I2C主机。

代码语言:javascript
复制
i2c_CmdBufAppend(2, 0x50, 1, 2, (char *)pDataWr, true, true); // Cmd = 2       : I2C write
                                                         // Address = 0x50
                                                         // AddrType = 1  : 7-bit address
                                                         // Length = 2    : 2 byte payload
                                                         // pDataWr       : buffer with 2 bytes payload (0x1234)
                                                         // STA = true    : generate start
                                                         // STO = true    : generate stop

我对您正在使用的库一无所知,但注释充分说明您正在寻址地址为0x50的设备(使用7位寻址),并且正在写入2个字节的数据,并且还会生成一个启动和停止条件。

您需要参考与之交互的I2C规范和EEPROM。

一旦你理解了规范,它就真的不难了。顺便说一句,这本书充满了向I2C设备读取/写入数据的示例。

某些设备设置为您必须向其写入一个特殊值(如寄存器或命令值),然后再读回数据。这是通过在命令之间没有停止的情况下发送写命令然后是读命令来设置的。

您正在与之交互的设备应该包含有关特殊命令的详细信息。库I2C库不会包含这些细节。

票数 2
EN

Stack Overflow用户

发布于 2011-11-15 06:20:57

添加到Freds帖子中

I2C规范将为您提供物理层、启动和停止模式、ack的位置以及谁在线路上驱动什么。

要理解所依赖的协议,通常必须查看设备本身的文档(通常还包括物理层的图纸)。

要理解某人的I2C代码,您需要您面前的设备的文档。要编写您自己的I2C代码,您需要您面前的设备的文档。如果设备是通用的,如eeprom,例如,许多供应商生产兼容的部件,那么在您面前放几个设备的文档可能是一个好主意,以防您想要支持或避免一些供应商特定的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8120722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档