Visual c++ 字节范例c库的使用

Visual c++ 字节范例c库的使用,visual-c++,embedded,i2c,Visual C++,Embedded,I2c,我想使用I2C C库作为“字节范例”I2C express设备。这是字节范例网站中提供的示例API // // 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 *)pData

我想使用I2C C库作为“字节范例”I2C express设备。这是字节范例网站中提供的示例API

//
// 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有何不同

//
// 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();

我已经阅读了字节范例库文档,但是那里的信息非常有限。请帮忙,提前谢谢:)

谷歌快速搜索I2C规范,结果如下:

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

执行代码的芯片是I2C主机

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库不会有这些详细信息。

谷歌快速搜索I2C规范导致:

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

执行代码的芯片是I2C主机

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库将不包含这些详细信息。

添加到Freds post

I2C规范将为您提供物理层、开始和停止模式、ack着陆的位置以及谁在导线上驱动什么

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

要理解其他人的I2C代码,您需要面前设备的文档。要编写自己的I2C代码,您需要面前设备的文档。如果设备是eeprom之类的通用设备,例如,许多供应商生产兼容部件,那么最好将几个设备的文档放在您面前,以防您需要支持或避免某些特定于供应商的内容。

添加到Freds post

I2C规范将为您提供物理层、开始和停止模式、ack着陆的位置以及谁在导线上驱动什么

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

要理解其他人的I2C代码,您需要面前设备的文档。要编写自己的I2C代码,您需要面前设备的文档。如果设备是eeprom之类的通用设备,例如,许多供应商生产兼容部件,那么最好将几个设备的文档放在您面前,以防您需要支持或避免某些特定于供应商的内容