NXP MCU 技术论坛
直播中

你又知道了

13年用户 1215经验值
私信 关注
[问答]

关于MIMXRT685 I3C中断主机示例问题求解

此段SAMPLE程序代码只有看显示波器slaveAddress波型,但没有数据资料,请问需要修改哪里呢?谢谢~
/**************************************************** *********************************
* 定义
****************** ****************************************************** **********/
#define EXAMPLE_MASTER I3C
#define EXAMPLE_I2C_BAUDRATE 400000
#define I3C_MASTER_CLOCK_FREQUENCY CLOCK_Geti3cClkFreq()
#define I3C_MASTER_SLAVE_ADDR_7BIT 0x1E
#define WAIT_TIME 1000
#define I3C_DATA_LENGTH 33
i3c_master_config_t 主配置;
i3c_master_transfer_t masterXfer;
status_t 结果 = kStatus_Success;
/* 将主时钟附加到 I3C,396MHz / 4 = 99MHz。*/
CLOCK_AttachClk(kMAIN_CLK_to_I3C_CLK);
CLOCK_SetClkDiv(kCLOCK_DivI3cClk, 4);
BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
PRINTF("rnI3C board2board Interrupt example -- Master transfer.rn");
/* I3C模式:设置i3c master工作在I3C模式,向slave发送数据*/ /
* txBuff中第一个数据为发送数据的数据长度。*/
g_master_txBuff[0] = I3C_DATA_LENGTH - 1U;
对于 (uint32_t i = 1U; i < I3C_DATA_LENGTH; i++)
{
g_master_txBuff = i - 1;
}
PRINTF("rn开始以I2C模式做I3C主控传输。rn");
PRINTF("Master 将发送数据:");
对于 (uint32_t i = 0U; i < I3C_DATA_LENGTH - 1U; i++)
{
if (i % 8 == 0)
{
PRINTF("rn");
}
PRINTF("0x%2x", g_master_txBuff[i + 1]);
}
PRINTF("rnrn");
I3C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Hz.i2cBaud = EXAMPLE_I2C_BAUDRATE;
masterConfig.baudRate_Hz.i3cPushPullBaud = 4000000U;
masterConfig.baudRate_Hz.i3cOpenDrainBaud = 1500000U;
masterConfig.enableOpenDrainStop = false;
I3C_MasterInit(EXAMPLE_MASTER, &masterConfig, I3C_MASTER_CLOCK_FREQUENCY);
/* 创建 I3C 句柄。*/
I3C_MasterTransferCreateHandle(EXAMPLE_MASTER, &g_i3c_m_handle, &masterCallback, NULL);
memset(&masterXfer, 0, sizeof(masterXfer));
/* subAddress = 0x01, data = g_master_txBuff - 写入从机。
start + slaveaddress(w) + subAddress + data buffer 长度 + data buffer + stop*/
uint8_t deviceAddress = 0x01U;
masterXfer.slaveAddress = I3C_MASTER_SLAVE_ADDR_7BIT;
masterXfer.direction = kI3C_Write;
masterXfer.busType = kI3C_TypeI2C;
masterXfer.subaddress = (uint32_t)deviceAddress;
masterXfer.subaddressSize = 1;
masterXfer.data = g_master_txBuff;
masterXfer.dataSize = I3C_DATA_LENGTH;
masterXfer.flags = kI3C_TransferDefaultFlag;
结果 = I3C_MasterTransferNonBlocking(EXAMPLE_MASTER, &g_i3c_m_handle, &masterXfer);

            

更多回帖

发帖
×
20
完善资料,
赚取积分