【GD32L233C-START】11、硬件I2C驱动0.96吋OLED
0、前言
关于oled的详细驱动,可查看一文彻底了解ssd1306驱动0.96寸oled,本文使用gd32l233硬件i2c驱动。
1、关于GD32L233CCT6的I2C接口
可以看出有两路I2C,分别是I2C0,I2C1。
2、开发板上I2C的引脚
可以看出,I2C1的引脚为PB10和PB11。
3、通用引脚复用为I2C
可以看出,是复用功能4。
4、代码实现(1)初始化i2c
代码语言:javascript代码运行次数:0运行复制void I2cInit(void){ rcu_periph_clock_enable(RCU_I2C1); rcu_periph_clock_enable(RCU_GPIOB); gpio_af_set(GPIOB, GPIO_AF_4, GPIO_PIN_10); gpio_af_set(GPIOB, GPIO_AF_4, GPIO_PIN_11); gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10); gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_10); gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_11); gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_11); /* configure I2C timing */ i2c_timing_config(I2C1, 0, 0x3, 0); i2c_master_clock_config(I2C1, 0x13, 0x36); /* configure I2C address */ i2c_address_config(I2C1, I2C_OWN_ADDRESS7, I2C_ADDFORMAT_7BITS); /* configure slave address */ i2c_master_addressing(I2C1, I2C_SLAVE_ADDRESS7, I2C_MASTER_TRANSMIT); /* configure number of bytes to be transferred */ i2c_transfer_byte_number_config(I2C1, 2); /* enable I2C1 */ i2c_enable(I2C1);}登录后复制