主题中讨论的其他器件:ADS1115
工具与软件:
需要紧急帮助、仅修改代码"i2c_ex4_eeprom_polling"的应用程序级以连接 ADS1115芯片后、我的 I2C 时钟无法生成。
#include "driverlib.h"
#include "device.h"
#include "i2cLib_FIFO_polling.h"
#define I2C_BASE I2CA_BASE
#define ADS1115_I2C_ADDR 0x48
void I2C_Init(void);
void I2C_WriteRegister(uint8_t reg, uint16_t value);
uint16_t I2C_ReadRegister(uint8_t reg);
uint16_t ADS1115_ReadConversion(void);
void ADS1115_WriteConfig(uint16_t config);
void I2C_Init(void)
{
I2C_disableModule(I2C_BASE);
I2C_initMaster(I2C_BASE, DEVICE_SYSCLK_FREQ, 400000, I2C_DUTYCYCLE_50);
I2C_setSlaveAddress(I2C_BASE, ADS1115_I2C_ADDR);
I2C_setConfig(I2C_BASE, I2C_MASTER_SEND_MODE);
I2C_enableModule(I2C_BASE);
}
void I2C_WriteRegister(uint8_t reg, uint16_t value)
{
while(I2C_getStatus(I2C_BASE) & I2C_STS_BUS_BUSY);
I2C_setConfig(I2C_BASE, I2C_MASTER_SEND_MODE);
I2C_putData(I2C_BASE, reg);
while(!(I2C_getStatus(I2C_BASE) & I2C_STS_TX_DATA_RDY));
I2C_putData(I2C_BASE, (value >> 8) & 0xFF);
while(!(I2C_getStatus(I2C_BASE) & I2C_STS_TX_DATA_RDY));
I2C_putData(I2C_BASE, value & 0xFF);
while(!(I2C_getStatus(I2C_BASE) & I2C_STS_TX_DATA_RDY));
I2C_sendStopCondition(I2C_BASE);
}
uint16_t I2C_ReadRegister(uint8_t reg)
{
uint16_t value = 0;
while(I2C_getStatus(I2C_BASE) & I2C_STS_BUS_BUSY);
I2C_setConfig(I2C_BASE, I2C_MASTER_SEND_MODE);
I2C_putData(I2C_BASE, reg);
while(!(I2C_getStatus(I2C_BASE) & I2C_STS_TX_DATA_RDY));
I2C_sendStopCondition(I2C_BASE);
I2C_setConfig(I2C_BASE, I2C_MASTER_RECEIVE_MODE);
value = I2C_getData(I2C_BASE) << 8;
I2C_sendAck(I2C_BASE);
while(!(I2C_getStatus(I2C_BASE) & I2C_STS_RX_DATA_RDY));
value |= I2C_getData(I2C_BASE);
I2C_sendStopCondition(I2C_BASE);
return value;
}
void ADS1115_WriteConfig(uint16_t config)
{
I2C_WriteRegister(0x01, config);
}
uint16_t ADS1115_ReadConversion(void)
{
return I2C_ReadRegister(0x00);
}
void main(void)
{
Device_init();
Device_initGPIO();
I2C_Init();
ADS1115_WriteConfig(0x8583); // Example Configuration
while(1)
{
uint16_t adcValue = ADS1115_ReadConversion();
DEVICE_DELAY_US(500000);
}
}我在下面提供了我的代码,我对 C2000平台相当陌生,我需要一个指导,以了解我做了错误或留下的任何配置???