在线时间227 小时
UID261364
注册时间2020-5-12
NXP金币0
该用户从未签到
金牌会员
 
- 积分
- 1367
- 最后登录
- 2024-12-31
|

楼主 |
发表于 2024-5-11 08:41:06
|
显示全部楼层
本帖最后由 chuandaoxy 于 2024-5-11 08:49 编辑
多谢guanguan,找到个845的硬件i2c驱动,
static void OLED_Command (uint8_t Cmd)
{
i2c_master_transfer_t xfer = {0};
xfer.data = (uint8_t *)&Cmd;
xfer.dataSize = sizeof(Cmd);
xfer.flags = kI2C_TransferDefaultFlag;
xfer.slaveAddress = SSD1306_ADDRESS_1;
xfer.direction = kI2C_Write;
xfer.subaddress = 0x0;
xfer.subaddressSize = 1;
I2C_MasterTransferBlocking(I2C1, &xfer);
}
static void OLED_Data (uint8_t *Data)
{
i2c_master_transfer_t xfer = {0};
/*Start Transfer*/
xfer.data = Data;
xfer.dataSize = sizeof(OLED_Buffer);
xfer.flags = kI2C_TransferDefaultFlag;
xfer.slaveAddress = SSD1306_ADDRESS_1;
xfer.direction = kI2C_Write;
xfer.subaddress = 0x40;
xfer.subaddressSize = 1;
I2C_MasterTransferBlocking(I2C1, &xfer);
}
上面两个关键的函数,下面是824的demo
* Function to setup and execute I2C transfer request */
static void SetupXferRecAndExecute(uint8_t devAddr,
uint8_t *txBuffPtr,
uint16_t txSize,
uint8_t *rxBuffPtr,
uint16_t rxSize)
{
/* Setup I2C transfer record */
i2cmXferRec.slaveAddr = devAddr;
i2cmXferRec.status = 0;
i2cmXferRec.txSz = txSize;
i2cmXferRec.rxSz = rxSize;
i2cmXferRec.txBuff = txBuffPtr;
i2cmXferRec.rxBuff = rxBuffPtr;
Chip_I2CM_XferBlocking(LPC_I2C, &i2cmXferRec);
}
|
|