1998|1

309

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

[RTT&瑞萨高性能 CPK-RA6M4] 5、软件模拟I2C驱动OLED评测 [复制链接]

一、硬件部分

1、管脚资源

由于用的是纯软件模拟,所以引脚方面没什么特别要求,因此还是用的上个评测项目的连线方式

[RTT&瑞萨高性能 CPK-RA6M4] 4、SPI驱动OLED评测

2、I2C时序

由于要使用I2C进行传输,因此需要对I2C的时序等有了解

  I2C传输过程中,数据只能在SCL低电平期间发生改变,因此在软件模拟时,要符合I2C的时序要求

二、软件部分

1、RTT Settings

由于需要软件模拟I2C,因此在RTT Settings中,需要简单的设置一些参数,使能I2CBus,并设置相应的管脚Pin。事实上,只需要管脚的宏定义就可以了

 

2、FSP配置

瑞萨的smart configurator中不需要额外的设置的,使用最基础的的配置就可以了,就是GPIO和串口7的配置,另外,如需要呼吸灯,加上PWM等

 3、代码说明

由于驱动的是同一块OLED,所以,只修改了驱动方式中的数据传输,前一个项目用的是SPI,本次项目只需要模拟I2C就可以了,所以代码部分的更改不多

#define OLED_SCL_0  rt_pin_write(BSP_I2C1_SCL_PIN, PIN_LOW);
#define OLED_SCL_1  rt_pin_write(BSP_I2C1_SCL_PIN, PIN_HIGH);
#define OLED_SDA_0  rt_pin_write(BSP_I2C1_SDA_PIN, PIN_LOW);
#define OLED_SDA_1  rt_pin_write(BSP_I2C1_SDA_PIN, PIN_HIGH);

void oled_i2c_write( rt_uint8_t Data)
{

    rt_uint8_t i = 0;

    OLED_SCL_0;
    for(i = 0;i < 8;i++)
    {
        OLED_SCL_0;
        if (Data & 0x80)
        {
            OLED_SDA_1;
        }
        else
        {
            OLED_SDA_0;
        }
        OLED_SCL_1;
        Data <<= 1;
    }

}

另外,就是初始化部分有一些区别了,毕竟SPI和I2C的初始化不同

int OLED_Pin_Init(void)//IO初始化
{
//    char user_data[] = {1};
//    if (rt_spi_bus_attach_device(&spi_dev_oled, "oled", "spi1", user_data) != RT_EOK)
//        return -RT_ERROR;
//
//    /* config spi */
//    {
//        struct rt_spi_configuration cfg;
//        cfg.data_width = 8;
//        cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB;
//        cfg.max_hz = 5 * 1000 * 1000; /* 42M,SPI max 42MHz,lcd 4-wire spi */
//
//        rt_spi_configure(&spi_dev_oled, &cfg);
//    }

    rt_pin_mode(BSP_I2C1_SCL_PIN,  PIN_MODE_OUTPUT);
    rt_pin_mode(BSP_I2C1_SDA_PIN,  PIN_MODE_OUTPUT);

    rt_pin_mode(OLED_RST_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(OLED_DC_PIN,  PIN_MODE_OUTPUT);
    rt_pin_mode(OLED_CS_PIN,  PIN_MODE_OUTPUT);

    return RT_EOK;
}

4、演示视频

I2C-OLED

三、心得体会

在使用I2C的过程,参考了很多例程,但是在实际使用的时候,还是使用原来在其他芯片上使用的软件模拟I2C实现的,这个模拟是从时序开始的,但是在传输逻辑中,没有考虑应答这些,好在评测结果还是不错的。因此,感觉和I2C的start、stop、ack、nack等有一定的不同,尤其是I2C地址,因此本次的模拟应该是不完整的,由于在多个设备通讯时。本次评测j结束后,会考虑完整的I2C模拟。

最新回复

多个设备通讯时软件模拟I2C是有点难度的 楼主的测评方法给了启发   详情 回复 发表于 2022-6-10 06:44
点赞 关注

回复
举报

6807

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

多个设备通讯时软件模拟I2C是有点难度的

楼主的测评方法给了启发

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表