27.3.4.2內核下的I2C驅動(二)

      網友投稿 830 2025-04-08

      用戶態直接訪問,使用內核提供的驅動程序


      dev-interface

      注意,不要直接使用read(),write()操作函數,直接使用i2c_smbus_write_word_data,i2c_smbus_read_word_data。官方文檔給了說明,如下

      驅動程序編譯進內核才有效,I2c-dev.c依賴于那些配置項,查看Makefile

      makemenuconfig,搜索CONFIG_I2C_CHARDEV

      重啟內核,編譯新內核,之后下載到開發板

      測試代碼

      #include #include #include #include #include #include #include "i2c-dev.h" /* i2c_usr_test r addr * i2c_usr_test w addr val */ void print_usage(char *file) { printf("%s r addr\n", file); printf("%s w addr val\n", file); } int main(int argc, char **argv) { int fd; unsigned char addr, data; int dev_addr; if ((argc != 5) && (argc != 6)) { print_usage(argv[0]); return -1; } fd = open(argv[1], O_RDWR); if (fd < 0) { printf("can't open %s\n", argv[1]); return -1; } dev_addr = strtoul(argv[2], NULL, 0); if (ioctl(fd, I2C_SLAVE, dev_addr) < 0) { /* ERROR HANDLING; you can check errno to see what went wrong */ printf("set addr error!\n"); return -1; } if (strcmp(argv[3], "r") == 0) { addr = strtoul(argv[4], NULL, 0); data = i2c_smbus_read_word_data(fd, addr); printf("data: %c, %d, 0x%2x\n", data, data, data); } else if ((strcmp(argv[3], "w") == 0) && (argc == 6)) { addr = strtoul(argv[4], NULL, 0); data = strtoul(argv[5], NULL, 0); i2c_smbus_write_byte_data(fd, addr, data); } else { print_usage(argv[0]); return -1; } return 0; }

      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

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      27.3.4.2內核下的I2C驅動(二)

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格怎么滾動截長圖?excel表格滾動截圖操作方法
      下一篇:如何設置不用頁面不同的頁眉(不同頁面如何設置不同的頁眉)
      相關文章
      亚洲国产精品yw在线观看| 7777久久亚洲中文字幕蜜桃 | 亚洲av日韩片在线观看| 亚洲午夜精品一区二区麻豆| 亚洲av永久无码嘿嘿嘿| 亚洲免费观看网站| 91亚洲精品自在在线观看| 亚洲大尺码专区影院| 亚洲午夜精品在线| 中文文字幕文字幕亚洲色| 亚洲制服丝袜中文字幕| 日韩亚洲国产综合高清| 亚洲 欧洲 视频 伦小说| 亚洲熟妇无码八V在线播放| 亚洲综合av一区二区三区不卡| 亚洲中文字幕乱码熟女在线| 亚洲色偷偷色噜噜狠狠99| 亚洲精品美女久久久久久久| 亚洲AV无码专区在线观看成人| 国产亚洲一卡2卡3卡4卡新区 | 午夜亚洲AV日韩AV无码大全| 亚洲精品高清视频| 911精品国产亚洲日本美国韩国 | 久久亚洲国产精品123区| 久久亚洲AV永久无码精品| 国产成A人亚洲精V品无码| 久久精品国产96精品亚洲 | 久久精品国产亚洲av影院| 亚洲网红精品大秀在线观看 | 亚洲国产av美女网站| 亚洲中文字幕久久精品无码A | 久久精品国产亚洲AV无码麻豆| 亚洲性色高清完整版在线观看| 亚洲五月丁香综合视频| 亚洲精品无码一区二区| 亚洲国产精品综合久久网络| 国产亚洲精久久久久久无码| 1区1区3区4区产品亚洲| 自拍日韩亚洲一区在线| 国产亚洲成在线播放va| 国产亚洲精AA在线观看SEE|