器件型号:LAUNCHXL-F28377S
工具/软件:Code Composer Studio
大家好、我正在使用 F28377S 微控制器、
我对 i2cn´t 有一些疑问、因为我无法正确配置(用于发送要显示的数据的配置)。
我需要:
- 微控制器必须是主器件。
- 微控制器必须发送数据/Start–数据(带有从器件地址)–Stop / Bytes 到从器件。
- I2C 数据必须在函数调用时发送(无中断)。
在 C2000或控制套件提供的示例中、不考虑这种情况(中断示例)。
在我的示例中,微控制器仅将从地址发送到 i2c 总线(不含数据),我不知道原因。
我尝试了许多 i2c 配置、但结果是相同的。
您是否有任何具有这些特征的示例?
可以帮帮我吗?
我的示例:
//包含的文件
//
#include "driverlib.h"
#include "device.h"
//
//定义
//
#define SLAVE_ADDRESS 0x74
//
//全局
//
uint16_t sData[8]; //发送数据缓冲区
uint16_t RDATA[8]; //接收数据缓冲器
uint16_t rDataPoint = 0; //跟踪我们在中的位置
//数据流以检查接收到的数据
//
//函数原型
//
void initI2C (void);
//
//主函
//
void main (void)
{
uint16_t i;
//
//初始化设备时钟和外设
//
device_init();
//
//禁用引脚锁定并启用内部上拉。
//
DEVICE_initGPIO();
//
//初始化 GPIO 42和43分别用作 SDA A 和 SCL A
//
GPIO_setPinConfig (GPIO_42_SDAA);
GPIO_setPadConfig (42、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (42、GPIO_QUAL_异 步);
GPIO_setPinConfig (GPIO_43_SCLA);
GPIO_setPadConfig (43、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (43、GPIO_QUAL_异 步);
//
//初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
//
interrupt_initModule();
//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//
interrupt_initVectorTable();
//
//设置 I2C 使用,将其初始化为 FIFO 模式
//
initi2C();
//
//初始化数据缓冲区
//
对于(I = 0;I < 8;I++)
{
sData[i]= 0;
RDATA[i]=0;
}
sData[0]= 0x00;
sData[1]=0x01;
sData[2]=0x02;
sData[3]=0x03;
sData[4]=0x04;
sData[5]= 0x05;
sData[6]= 0x06;
sData[7]= 0x07;
//
//启用全局中断(INTM)和实时中断(DBGM)
//
EINT;
ERTM;
//
//永久循环。
//
while (1)
{
/*//
//读取数据
//
对于(I = 0;I < 8;I++)
{
RDATA[i]= I2C_getData (I2CA_BASE);
}
rDataPoint =(rDataPoint + 1)& 0xFF;
*
uint16_t i;
I2C_setConfig (I2CA_BASE、I2C_MASTER_SEND_MODE);
I2C_setSlaveAddress (I2CA_BASE、SLAVE_ADDRESS);
对于(I = 0;I < 8;I++)
{
I2C_putData (I2CA_BASE、sData[i]);
}
//
//发送数据
//
I2C_sendStartCondition (I2CA_BASE);
I2C_sendStopCondition (I2CA_BASE);
}
}
//
//函数、用于在 FIFO 模式下配置 I2C A。
//
空 initI2C()
{
//
//必须在配置 I2C 之前将其复位
//
I2C_DisableModule (I2CA_BASE);
//
// I2C 配置。 使用占空比为50%的50kHz I2CCLK。
//
I2C_initMaster (I2CA_BASE、DEVICE_SYSCLK_FREQ、50000、I2C_DUTYCYCLE _50);
I2C_setConfig (I2CA_BASE、I2C_MASTER_SEND_MODE);
I2C_setDataCount (I2CA_BASE、8);
I2C_setBitCount (I2CA_BASE、I2C_BITCOUNT_8);
//
//配置
//
I2C_setSlaveAddress (I2CA_BASE、SLAVE_ADDRESS);
I2C_setEmulationMode (I2CA_BASE、I2C_emulation_free_run);
//
// FIFO 配置
//
I2C_enableFIFO (I2CA_BASE);
I2C_setFIFOInterruptLevel (I2CA_BASE、I2C_FIFO_TX2、I2C_FIFO_RX2);
//
//配置完成。 启用模块。
//
I2C_enableModule (I2CA_BASE);
}
//
//文件结束
//
I2C 总线结果
[0xE8-[0xE8-][0xE8-[0xE8-][0xE8-][0xE8-[0xE8-][0xE8-]
感谢大家、
此致、