这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » MSPM03507硬件I2C驱动OLED

共7条 1/1 1 跳转至

MSPM03507硬件I2C驱动OLED

助工
2024-07-09 21:16:58     打赏

1、复制一个示例i2c的示例工程,并重命名为LP_MSPM0G3507_oled

image.png

2、开启i2c1,并设置速率为400K

image.png

3、保存到工程,然后添加oled的驱动库

image.png

4、在驱动库中,主要需要修改的为write_byte函数,内容如下:

int I2C_WriteByte(uint8_t addr, uint8_t data) {
  uint8_t buff[2] = {0};
  buff[0] = addr;
  buff[1] = data;
  /* Wait for I2C to be Idle */
  while (!(DL_I2C_getControllerStatus(I2C_OLED_INST) &
           DL_I2C_CONTROLLER_STATUS_IDLE))
    ;

  /* Send the packet to the controller.
   * This function will send Start + Stop automatically.
   */
  DL_I2C_startControllerTransfer(I2C_OLED_INST, OLED_ADDR,
                                 DL_I2C_CONTROLLER_DIRECTION_TX, 2);
  DL_I2C_fillControllerTXFIFO(I2C_OLED_INST, &buff[0], 2);
  /* Poll until the Controller writes all bytes */
  while (DL_I2C_getControllerStatus(I2C_OLED_INST) &
         DL_I2C_CONTROLLER_STATUS_BUSY_BUS)
    ;

  /* Trap if there was an error */
  if (DL_I2C_getControllerStatus(I2C_OLED_INST) &
      DL_I2C_CONTROLLER_STATUS_ERROR) {
    /* LED will remain high if there is an error */
    __BKPT(0);
  }
  return 0;
}

这样我们的代码就移植完毕。

4、添加测试代码:

#include "ti_msp_dl_config.h"

#include "\oled\oled.h"

int main(void)
{
    SYSCFG_DL_init();

    /* Set LED to indicate start of transfer */
    OLED_Init();
    OLED_CLS();

    OLED_ShowString(3, 1,"LP-MSPM0G3507", 2);

    OLED_ShowString(5, 1,"eepw Ti", 2);

    /* If write and read were successful, toggle LED */
    while (1) {

    }
}

5、测试结果:

a49f328bfa468caeaa2fe3df8f495a5.jpg

到此移植OLED就完毕。

【移植要点】

1、要准备已经做好的OLED的驱动。

2、配置好I2C。

3、改写i2cwritbyte函数。



高工
2024-07-09 21:53:04     打赏
2楼

谢谢分享


专家
2024-07-10 08:14:58     打赏
3楼

谢谢分享


专家
2024-07-10 08:10:32     打赏
4楼

不错,感谢分享


高工
2024-07-10 20:50:04     打赏
5楼

感谢分享


专家
2024-07-16 01:57:53     打赏
6楼

感谢分享


助工
2024-07-16 11:51:31     打赏
7楼

围观一下


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]