【Telink B91】2. 矩阵按键以及freeRTOS应用
【Telink B91】3. 硬件I2C驱动OLED
【Telink B91】4. 硬件I2C采集HS3003温湿度信息
前言
本文使用B91的I2C驱动OLED,用来显示中文以及英文。
OLED的I2C通信地址长度为7位,地址为0x3C。
1 I2C驱动
本文使用的I2C的引脚如下:
- SCL - PB2
- SDA - PB3
由于Telink B91的库写的很好,SDK Demo也给出来示例工程,所以在驱动上还是比较方便,下面说一下驱动过程。
1.1 硬件I2C驱动
I2C初始化代码如下:
- /*
- @hehung
- 2023-7-8
- email: 1398660197@qq.com
- wechat: hehung95
- reproduced and please indicate the source @hehung
- */
- #include "app_hw_i2c.h"
- #include "app_config.h"
- #define I2C_CLK_SPEED 400000 //i2c clock 400K.
- void I2c_Init(void)
- {
- // Initialize the pins for I2C
- i2c_set_pin(I2C_GPIO_SDA_PIN,I2C_GPIO_SCL_PIN);
- i2c_master_init();
- i2c_set_master_clk((unsigned char)(sys_clk.pclk*1000*1000/(4*I2C_CLK_SPEED)));
- }
1.2 硬件
下面是I2C的写数据和写命令驱动代码。
- /*********************OLED写数据函数************************************/
- void OLED_WrDat(unsigned char IIC_Data)
- {
- uint8_t i2c_transmitter[2]={0x40, IIC_Data};
- i2c_master_write(OLED_I2C_SLAVE_ADDR_7BIT, i2c_transmitter, 2);
- }
- /*********************OLED写命令函数************************************/
- void OLED_WrCmd(unsigned char IIC_Command)
- {
- uint8_t i2c_transmitter[2]={0x00, IIC_Command};
- i2c_master_write(OLED_I2C_SLAVE_ADDR_7BIT, i2c_transmitter, 2);
- }
1.3 主函数
下面代码用于显示中文以及英文信息。
- /* initialize the OLED */
- OLED_Init();
- OLED_ShowString(24, 0, (const uint8_t*)"Telink B91", 16, 1);
- OLED_ShowHzStringRow(24, 16, (const char*)"泰凌微电子", 1);
- OLED_ShowHzStringRow(40, 32, (const char*)"面包板", 1);
- OLED_ShowString(64, 48, (const uint8_t*)"--hehung", 16, 1);
- OLED_Refresh_Gram();
2附件
如下附件并不是完整工程,只是OLED驱动相关的代码。可以将相关代码放置到官方提供的SDK的FreeRTOS_Demo中进行覆盖并测试验证。
全部回复 0
暂无评论,快来抢沙发吧