Visual c++ 字节范例c库的使用
我想使用I2C C库作为“字节范例”I2C express设备。这是字节范例网站中提供的示例APIVisual 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
//
// 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之类的通用设备,例如,许多供应商生产兼容部件,那么最好将几个设备的文档放在您面前,以防您需要支持或避免某些特定于供应商的内容