Cet outil peut être utilisé pour lire la valeur dans l'adresse du registre sur le périphérique i2c, et l'adresse du registre peut être définie

//可用于读取IC2 设备寄存器中的值
#include <stdio.h>
#include <linux/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
# include <sys/types.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <assert.h>
#include <string.h>
#include <linux/i2c.h>
#include < linux/i2c-dev.h>

int main(int argc, char **argv)
{     struct i2c_rdwr_ioctl_data work_queue ;     idx int non signé ;     int non signé fd ;     unsigned int slave_address, reg_address ;     val de caractère non signé ;     int je ;     int ret;






    if (argc < 4) {         printf("Usage :\n%s /dev/i2c-x start_addr reg_addr\n", argv[0]);         renvoie 0 ;     }


    fd = ouvert(argv[1], O_RDWR);

    if (!fd) {         printf("Erreur lors de l'ouverture du fichier de périphérique\n");         renvoie 0 ;     }     sscanf(argv[2], "%x", &adresse_esclave);     sscanf(argv[3], "%x", ®_address);




    work_queue.nmsgs = 2 ;
    /* 消息数量 */
    work_queue.msgs = (struct i2c_msg*)malloc(work_queue.nmsgs *sizeof(struct i2c_msg));
    if (NULL == work_queue.msgs) {         printf("Erreur d'allocation de mémoire\n");         fermer(fd);         renvoie 0 ;     }



    ioctl(fd, I2C_TIMEOUT, 2);
    /* définir le délai d'attente */
    ioctl(fd, I2C_RETRIES, 1);
    /* définir les délais de nouvelle tentative */

    for (i = reg_address; je < reg_address + 16; i++) {         val = i;         (work_queue.msgs[0]).len = 1;         (work_queue.msgs[0]).addr = slave_address;         (work_queue.msgs[0]).buf = &val;         (work_queue.msgs[1]).len = 1;         (work_queue.msgs[1]).flags = I2C_M_RD ;         (work_queue.msgs[1]).addr = slave_address;         (work_queue.msgs[1]).buf = &val;         ret = ioctl(fd, I2C_RDWR, (long non signé) &work_queue);         if (ret < 0)             printf("Erreur lors de l'ioctl I2C_RDWR avec le code d'erreur : %d\n", ret);         sinon             printf("reg:%02x val:%02x\n", je, val);     }     fermer(fd);















    renvoie 0 ;
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_48709036/article/details/123042805
conseillé
Classement