L'i2c fourni avec le K210 présente un inconvénient. Lorsque vous lisez les données, s'il n'y a pas de communication en raison du problème d'adresse, il n'y a aucun moyen de tester si l'appareil répond via l'oscilloscope. Il ne sera envoyé qu'une seule fois si il ne répond pas. Le programme sera bloqué, donc parfois vous devez encore utiliser l'i2c simulé pour tester, mais l'i2c simulé a aussi l'inconvénient que la vitesse est relativement lente, s'il y a relativement peu de registres, c'est bien, mais s'il y en a plus, ce n'est pas exclu, il y a un risque d'erreur.
Triez le code pertinent, comme suit, voici un dispositif aléatoire pour que cet exemple de code, similaire à la petite différence, puisse être modifié en fonction des besoins, le code n'est pas assez concis, veuillez me pardonner:
#ifndef _I2C_GM7122_H
#define _I2C_GM7122_H
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#define GM7122_SLAVE_ADDRESS 0x44
void GM7122_i2c_master_init(void);
uint8_t GM7122_i2c_write_reg(uint8_t reg, uint8_t *data_buf, size_t length);
uint8_t GM7122_i2c_read_reg(uint8_t reg, uint8_t *data_buf, size_t length);
uint8_t GM7122_init(void);
#endif
#include <devices.h>
#include <sys/unistd.h>
#include "i2c_GM7122.h"
#define DELAY_TIME 10
static handle_t piohs;
static ha