本帖最后由 wind_west 于 2023-6-17 17:21 编辑

1、驱动LCD

上一节已经实现了串口下载固件,继续往下走。当前计划使用IIC驱动一款显示屏,驱动的显示屏选择:oled12864,如图:

forum.jpg

I2C的资料也可以参考野火,他也有RA系列相关的教程,链接:2. 如何安装e2 studio/Keil开发环境 — [野火]瑞萨RA系列FSP库开发实战指南——基于野火启明开发板  文档

从教程中得知,不能使用DAP仿真器(那基本上ST-LINK就更不要想了):

forum.jpg


设置IIC功能:

安装资料包中的PPT,针对IIC外设的使用,基本操作都讲到了。按照教程,增加IIC外设→属性:

forum.jpg

当前P400引脚上没有输出信号:

forum.jpg



需要注意的是:生成的工程使用rtos的时候,默认是没有之前的 hal_entry()函数调用了所以这里已经没有调用之前的LED的初始化代码了,如图:

forum.jpg



将OLED的初始化放到相关任务后,发现LED就不亮了;注释掉OLED操作的香瓜代码后,LED正常闪烁。最有可能是IIC的操作有错误,导致程序卡死了。现在没有初始化串口,所以暂时使用LED的亮灭状态来调试代码。

forum.jpg



接上oled能够在示波器上看到IIC相关波形,如图:

forum.jpg

所以,推测IIC初始化肯定成功了,只需要排除接线问题。果然,排除接线问题后,oled12864显示正常,如图:

生态工作室.jpg


这里的OLED驱动代码暂时也是使用的资料包里面的例程,后面会上U8G2显示库。

2、驱动温度传感器

刚好有一个LM75温度传感器。简单看了一下时序:

forum.jpg

forum.jpg

forum.jpg

简单看了设置寄存器,在这里并不想使用输出报警功能,只要能够读取实时温度就行。

正常的IIC通信时序:     
     IIC的通信知识点有点陌生了,找了几张图补充了一下知识点:

forum.jpg

寄存器地址:

forum.jpg

应该连起来看,首先是设置指针寄存器,然后就可以随便读取温度了。

forum.jpg



尝试定义多个IIC对象
在这里OLED和LM75都是使用的硬件IIC,所以尝试定义多个IIC对象:

forum.jpg



这里定义了2个IIC对象,结果发现固件下载后,直接异常了,OLED不显示,温度不能采集:

forum.jpg

所以只能换一种方式,点击相关属性的感叹号,能够找到一主多从的解析:

forum.jpg

forum.jpg

抓取了部分代码:

    /* Send data to I2C slave on the same channel */
    err = R_IIC_MASTER_SlaveAddressSet(&g_i2c_device_ctrl_2, I2C_SLAVE_DISPLAY_ADAPTER, I2C_MASTER_ADDR_MODE_7BIT);
    assert(FSP_SUCCESS == err);
    g_i2c_tx_buffer[0]   = 0xAA;       // NOLINT
    g_i2c_tx_buffer[1]   = 0xBB;       // NOLINT
    g_i2c_callback_event = I2C_MASTER_EVENT_ABORTED;
    timeout_ms           = I2C_TRANSACTION_BUSY_DELAY;
    err = R_IIC_MASTER_Write(&g_i2c_device_ctrl_2, &g_i2c_tx_buffer[0], 2U, false);
    assert(FSP_SUCCESS == err);
    while ((I2C_MASTER_EVENT_TX_COMPLETE != g_i2c_callback_event) && timeout_ms)
    {
        R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);
        timeout_ms--;;
    }
    if (I2C_MASTER_EVENT_ABORTED == g_i2c_callback_event)
    {
        __BKPT(0);
    }

显示温度效果:

温度显示.jpg

视频效果(温度采集后直接显示,没有滤波,各位将就看):



相关链接:
【瑞萨 RA2E1】+ 点亮LED(1)
【瑞萨 RA2E1】+ 硬件IIC驱动LCD和LM75温度传感器(2)
【瑞萨 RA2E1】+ 基于U8G2显示菜单(3)
【瑞萨 RA2E1】+ 红外解码(4)
【瑞萨 RA2E1】+ 红外发射(5)
【瑞萨 RA2E1】+ 空调控制项目-总结帖(6)