i2c
Questa libreria è vecchia e si usava con MPLAB IDE e compilatore Hitech-C per PIC10/12/16. Su MPLAB X IDE (con compilatore XC) è presente il Code Configurator che genera in automatico le librerie I2C (qui maggiori informazioni).
Indice dei contenuti
Prerequisiti
PicMicro con modulo MSSP. Non è supportato il modulo SSP. Hitech C versione > 9.81
Utilizzo
Definire in i2c.h la frequenza del clock da utilizzare espressa in KHz, valori ammessi: 100, 400 e 1000:
#define CLOCK 400 // 400KHz |
Definire in i2c.h la frequenza dell’oscillatore espressa in Hertz:
#define FOSC 32000000UL // 32MHz |
Definire in i2c.h i due pin del modulo MSSP utilizzati come C:
#define SCL_PIN TRISA1 #define SDA_PIN TRISA2 |
Includere nel programma principale la chiamata a i2c.c:
#include "i2c.c" |
Inizializzare nel main il modulo:
I2cInitMaster(); // inizializzo il modulo MSSP in modalità master |
Funzioni disponibili
void I2cInitMaster (void); // Init MSSP in Master mode void I2cInitSlave (const unsigned char address); // Init MSSP in Slave mode (indirizzo a 7 bit) void I2cWait(void); // Attesa flag interrupt su modulo MSSP void I2cWaitForIdle(void); // Attesa bus in stato idle void I2cStart(void); // Sequenza di start void I2cRepStart(void); // Sequenza di start ripetuto void I2cStop(void); // Sequenza di stop unsigned char I2cReadMaster(unsigned char ack); // Lettura in modalità Master unsigned char I2cWriteMaster(unsigned char I2cWriteData); // Scrittura in modalità Master unsigned char I2cReadSlave(); // Lettura in modalità Slave void I2cWriteSlave(unsigned char data); // Scrittura in modalità Slave |
Nella versione 1.2 della libreria è disponibile la funzione aggiuntiva:
void I2cBulkRead(unsigned char devAddress, unsigned char regAddress, unsigned char numReads, unsigned char *buffer); // lettura bulk |
La lettura bulk consente di eseguire la lettura di più registri del dispositivo slave in sequenza a partire dal registro definito da regAddress, vengono eseguite numReads letture consecutive e i risultati delle letture vengono memorizzate nell’array *buffer. L’indirizzo del dispositivo slave, devAddress, va definito come indirizzo a 7 bit
Download versione 1.0
Download versione 1.2
Questa versione ha in più unicamente la funzione I2cBulkRead che permette la lettura sequenziale comunque facile da implementare leggendo questo articolo.