📄 i2c-test.c
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/ioctl.h>#include <fcntl.h>#include <unistd.h> #include <signal.h>#include <string.h>#include "innoaccess.h"void sighandler(int signo){ if (signo==SIGINT){ printf("SIGINT occurs.\r\n"); } return;}int main(int argc, char **argv){ int fd; int ret; int i; inno_reg_t reg_data={0}; unsigned char bank = 0; char* endptr; struct sigaction action; printf("argc == %d", argc); if(argc < 3){ printf("usage:\n"); printf("read register data:\t%s -r reg\r\n", argv[0]); printf("write register data:\t%s -w reg data\r\n", argv[0]); printf("read bank registers data:\t%s -br bank\r\n", argv[0]); // return 0; } printf("DEV_NAME = %s", DEV_NAME); fd = open(DEV_NAME, O_RDWR); if(fd == -1){ printf("open failed.\r\n"); return -1; } memset(&action, 0, sizeof(action)); action.sa_handler = sighandler; action.sa_flags = 0; sigaction(SIGINT, &action, NULL); if(strcmp(argv[1], "-r")==0){ reg_data.reg = (unsigned short)strtoul(argv[2], &endptr, 0); printf("R%x ", reg_data.reg); ret = ioctl(fd, INNO_READ_REG, (long*)®_data); printf("= %x.\n", reg_data.data); }else if(strcmp(argv[1], "-br")==0){ bank = (unsigned short)strtoul(argv[2], &endptr, 0); for(i=0; i<0xFF; i++){ reg_data.reg = REG_ADDR(bank, i); printf("R%x ", reg_data.reg); ret = ioctl(fd, INNO_READ_REG, (long*)®_data); printf("= %x.\n", reg_data.data); } }else if(strcmp(argv[1], "-w")==0){ reg_data.reg = (unsigned short)strtoul(argv[2], &endptr, 0); reg_data.data = (unsigned char)strtoul(argv[3], &endptr, 0); ret = ioctl(fd, INNO_WRITE_REG, (long*)®_data); }printf("close..\r\n"); close(fd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -