|
【STM32C0评测】3、I2C使用 一、STM32C0的I2C接口介绍 STM32C0、STM32G0、STM32L0等ARM^®^ Cortex^®^ -M0+内核MPU带的I2C接口都支持超快速模式(高达 1 MHz) 其中STM32C031C6有1个I2C接口
STM32F1系列I2C设置
STM32C0系列I2C设置,可见比以前的设置多了不少。
Custom Timing设置为Enabled,直接可以编辑上图灰色选项——Timing,对应的是配置代码中红线部分。这个寄存器值已经包含I2C速度、上升和下降时间、数字滤波等值。
具体设置请参考RM0490 STM32C 0x1参考手册,
2、硬件连接 I2C的SDA/SCL分别默认对应的是PB9/PB8,如GPIO被其他功能占用 I2C_SDA还可以设置在PA10、PB7、PC14 I2C_SCL还可以设置在PA9、PB6、PB7
I2C接口的OLED屏只需4根线,接线方式看下图
三、程序 为了方便我定义了接口程序 void I2C_Master_Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size) { while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY) { } while (HAL_I2C_Master_Transmit(&hi2c1,DevAddress,pData,Size,100)!= HAL_OK) { if (HAL_I2C_GetError(&hi2c1)!= HAL_I2C_ERROR_AF) { Error_Handler(); } } } OLED侧接口代码 void OLED_WR_Byte(uint8_t Byte,uint8_t DC) { uint8_t SendBuff[2]; SendBuff[0] = DC; SendBuff[1] = Byte; I2C_Master_Transmit(OLED_ADDRESS,SendBuff,2); } 四、效果 我不确定OLED屏是否能用在超快速模式,先以400K速度驱动
后续改为超快速模式测试,成功了!
测试频率为800KHz,没进一步深究问题在哪,但已经比400KHz快一倍
|
经验分享 | STM32CubeIDE 调试神技:条件断点与观察点,搞定长周期复现疑难杂症
STM32U5A9JDK试用---MIPI-DSI屏幕驱动
实战经验 | 使用STM32CubeIDE调试Zephyr RTOS
STM32CubeIDE 2.0.0:解耦STM32Cube MX与优化后的项目工作流程
我中奖啦,收到了STM32开发板,足足开心了一整天啊
经验分享 | 基于STM32CubeIDE的指定存储话题
【亮点速览】同步升级工具链 + 快速重置按钮 + 增量烧录!STM32CubeIDE for Visual Studio Code开发工具更新
【STM32C0评测】4、驱动Lorasx126x,实现透传
ST推出一款WiFi6&蓝牙模组
效率与探索之间:STM32CubeMX与STM32CubeAI试用有感
微信公众号
手机版