checksum_buf[0] =0xff- (checksum_buf[0]&0xff);/* step 1: unseal mode->write 0x01 to blockdatactrl authen_cmd_buf[0] = 0x01; rc =i2c_smbus_write_i2c_block_data(client,BLOCKDATACTRL,1,&authen_cmd_buf[0]); } */// step 1: seal mode->write 0x00 to dataflashblockrc =i2c_...
那就直接i2c_smbus_write_i2c_block_data吧,然后看了一下SMBUS对他的封装: 1staticinline __s32 i2c_smbus_write_i2c_block_data(intfile, __u8 command,2__u8 length, __u8 *values)3{4union i2c_smbus_data data;5inti;6if(length >32)7length =32;8for(i =1; i <= length; i++)9data...
I2C-tools中的函数:i2c_smbus_read_block_data 3.10 SMBus Block Write I2C-tools中的函数:i2c_smbus_write_blcok_data 3.11 I2C Block Read IIC也能实现Block读,不过它的区别在于。IIC的block读不存在Block Count位 I2C-tools中的函数:i2c_smbus_read_i2c_block_data 3.12 I2C Block Write I2C-tools中的函...
msb, lsb, crc = self.bus.read_i2c_block_data(I2C_ADDR, CMD_TRIG_TEMP_HM,3)return-46.85+175.72* (msb *256+ lsb) /65536defread_humidity(self):self.reset() msb, lsb, crc = self.bus.read_i2c_block_data(I2C_ADDR, CMD_TRIG_HUMID_HM,3)return-6+125* (msb *256+ lsb) /65536.0def...
根据http://www.raspberry-projects.com/pi/programming-in-python/i2c-programming-in-python/using-the-i2c-interface-2,write_block_data函数不是很好。 write_block_data(int addr,char cmd,long vals[]) Write up to 32 bytes to a device. This function adds an initial byte ...
一些I2C适配器仅仅兼容SMBus协议(System Management Bus,系统管理总线)。而SMBus只是I2C协议的子集。幸运的是,大部分设备都使用相同的子集,故可以将它们放置同一个SMBus中。如果你为一个I2C设备写驱动程序,而该设备仅仅使用I2C协议的子集,那么推荐你尽可能使用SMBus协议的命令。这样这个驱动程序既可以在SMBus适配...
由i2c_smbus_write_byte() 实现。 此操作与接收字节相反:它向设备发送单个字节。 S Addr Wr [A] Data [A] P 1. 功能flag:I2C_FUNC_SMBUS_WRITE_BYTE API分析: s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value); 1. ...
METH_VARARGS, SMBus_write_i2c_block_data_doc}, {NULL}, }; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 该函数库是C库,smbus2是纯python库; ...
第二个参数是要读取的数据块的起始的寄存器的地址,也就是通过I2C总线从0x00寄存器开始连续读sizeof(struct xydata_t)个数据到y_data中。
我觉得先用i2csmbuswritebytetaosdatapclienttaostritoncmdreg0x13找到0x13这个寄存器然后用i2csmbusreadbytetaosdatapclient读里面的数据因为0x13这个寄存器是一个只读的状态寄存器所以使用i2csmbuswritebyte并不能给这个寄存器里面写东西只是用它找到这个寄存器的地址然后使用i2csmbusreadbyte读取这个寄存器的内容如果是这样...