歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> I2C子系統之at24c02讀寫測試

I2C子系統之at24c02讀寫測試

日期:2017/3/1 10:12:46   编辑:Linux編程

結合ioctl和at24c02的介紹,寫了個at24c02的測試程序
測試硬件平台:TQ2440、at24c02
內核版本:linux-2.6.37.1
讀寫單獨分開成兩個小程序。

相關閱讀:

I2C子系統之at24c02讀寫測試 http://www.linuxidc.com/Linux/2012-08/68256.htm
I2C子系統之ioctl() http://www.linuxidc.com/Linux/2012-08/68257.htm
I2C子系統之at24c02簡介 http://www.linuxidc.com/Linux/2012-08/68258.htm
I2C子系統之總結 http://www.linuxidc.com/Linux/2012-08/68259.htm
I2C子系統之內核中I2C子系統的結構 http://www.linuxidc.com/Linux/2012-08/68260.htm
I2C子系統之I2C bus初始化——I2C_init() http://www.linuxidc.com/Linux/2012-08/68261.htm
I2C子系統之platfor_device初始化——smdk2440_machine_init() http://www.linuxidc.com/Linux/2012-08/68262.htm
I2C子系統之platform_driver初始化——I2C_adap_s3c_init() http://www.linuxidc.com/Linux/2012-08/68263.htm
I2C子系統之I2C總線時鐘頻率設置 http://www.linuxidc.com/Linux/2012-08/68264.htm
I2C子系統之adapter device和client device注冊——I2C_add_number_adapter() http://www.linuxidc.com/Linux/2012-08/68265.htm
I2C子系統之__I2C_first_dynamic_bus_num變量的相關分析 http://www.linuxidc.com/Linux/2012-08/68266.htm
I2C子系統之 adapter driver注冊——I2C_dev_init() http://www.linuxidc.com/Linux/2012-08/68267.htm
I2C子系統之write() http://www.linuxidc.com/Linux/2012-08/68268.htm

源碼如下:

寫測試程序:

  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <linux/i2c-dev.h>
  6. #include <errno.h>
  7. int main(int argc, char *argv[])
  8. {
  9. int num, err, i, j;
  10. int fd, addr;
  11. char *buff;
  12. printf("please input as:");
  13. printf("./wat24 [data]\n");
  14. fflush(stdout);
  15. if(argc < 3){
  16. printf("arg error\n");
  17. return -1;
  18. }
  19. num = argc - 1;
  20. buff = malloc(num*sizeof(char));
  21. if(buff < 0){
  22. printf("alloc failed\n");
  23. return -1;
  24. }
  25. buff[0] = atoi(argv[1]);
  26. printf("write data:\n");
  27. for(i = 1; i < num; i++){
  28. buff[i] = atoi(argv[i + 1]);
  29. printf("%d\n",buff[i]);
  30. }
  31. printf("from word addr:%d\n",buff[0]);
  32. fd = open("/dev/i2c-0",O_RDWR);
  33. if(fd < 0){
  34. printf("device open failed\n");
  35. return -1;
  36. }
  37. err = ioctl(fd, I2C_SLAVE_FORCE, 0x50);
  38. if(err < 0){
  39. printf("ioctl failed:%d\n",err);
  40. return -1;
  41. }
  42. write(fd, buff, num);
  43. close(fd);
  44. return 0;
  45. }
Copyright © Linux教程網 All Rights Reserved