lpc1788 iic例程
时间: 2023-09-29 22:03:45 浏览: 86
你好!关于LPC1788的IIC例程,你可以参考以下示例代码来进行开发:
```c
#include "lpc17xx_i2c.h"
#include "lpc17xx_pinsel.h"
#define I2CDEV LPC_I2C2
void i2c_init(void)
{
PINSEL_CFG_Type PinCfg;
I2C_Init(I2CDEV, 100000); // 设置I2C速率为100kHz
PinCfg.OpenDrain = PINSEL_PINMODE_OPENDRAIN;
PinCfg.Pinmode = PINSEL_PINMODE_PULLUP;
PinCfg.Funcnum = PINSEL_FUNC_2;
PinCfg.Pinnum = 10;
PinCfg.Portnum = 0;
PINSEL_ConfigPin(&PinCfg); // 配置SCL引脚
PinCfg.Pinnum = 11;
PINSEL_ConfigPin(&PinCfg); // 配置SDA引脚
I2C_Cmd(I2CDEV, ENABLE);
}
void i2c_start(void)
{
I2C_M_SETUP_Type transferMCfg;
uint8_t start_buf[1] = {0x00};
transferMCfg.sl_addr7bit = SLAVE_ADDR;
transferMCfg.tx_data = start_buf;
transferMCfg.tx_length = 1;
transferMCfg.rx_data = NULL;
transferMCfg.rx_length = 0;
transferMCfg.retransmissions_max = 3;
I2C_MasterTransferData(I2CDEV, &transferMCfg, I2C_TRANSFER_POLLING);
}
void i2c_stop(void)
{
I2C_M_SETUP_Type transferMCfg;
uint8_t stop_buf[1] = {0x00};
transferMCfg.sl_addr7bit = SLAVE_ADDR;
transferMCfg.tx_data = stop_buf;
transferMCfg.tx_length = 1;
transferMCfg.rx_data = NULL;
transferMCfg.rx_length = 0;
transferMCfg.retransmissions_max = 3;
I2C_MasterTransferData(I2CDEV, &transferMCfg, I2C_TRANSFER_POLLING);
}
```
以上代码是一个简单的LPC1788的IIC初始化及发送起始信号和停止信号的例程。请注意,这只是一个基本的例子,你需要根据你的具体设备和需求来进行修改和扩展。
希望能对你有所帮助!如果你还有其他问题,请随时提问。
阅读全文