首页 > 其他分享 >RT-Thread 正点原子阿波罗STM32F429IGT6-软件IIC控制I/O扩展模块PCF8574T(踩坑)

RT-Thread 正点原子阿波罗STM32F429IGT6-软件IIC控制I/O扩展模块PCF8574T(踩坑)

时间:2023-06-27 15:23:32浏览次数:72  
标签:RT PCF8574T i2c Thread iic2 bus msg rt

第一步:在RT-Thread Settings中打开I2C设备驱动,Ctrl + S 保存

 第二步:在 drivers -> board.h 中进行配置,取消 BSP_USING_I2C2 的注释,并根据说明定义好引脚;

 第三步:对引脚进行初始化,这里可使用CubeMX进行生成;

 第四步:根据设备名查找设备

 第五步:调用  rt_i2c_transfer  发送数据,源代码如下:

rt_uint8_t data = 0x01;
struct rt_i2c_msg iic2_msg = {0};
static struct rt_i2c_bus_device *iic2_bus = RT_NULL;     /* I2C总线设备句柄 */int main(void)
{
    MX_GPIO_Init();
    iic2_bus = (struct rt_i2c_bus_device *)rt_device_find(IIC2_DEV_NAME);while (1)
    {
        iic2_msg.addr  = 0x40 >> 1;
        iic2_msg.flags = RT_I2C_WR;
        iic2_msg.buf   = &data;
        iic2_msg.len   = 1;

        rt_i2c_transfer(iic2_bus, &iic2_msg, 1);
    }
   return RT_EOK;
}

坑点:

在进行I2C驱动时,首先参考了RT-Thread参考手册中的 “AHT10温湿度传感器示例”,但模仿示例去编写程序,I2C输出波形就是不对,PCF8574T设备地址为0x40,但是直接调用 rt_i2c_transfer 发出去变成了0x80; 经过Debug发现在文件 i2c-bit-ops.c的第360行,对地址左移了1位,因此导致i2c输出设备地址不对;波形输出如下:(黄色为SDA,蓝色为SCL)

 因此在填充设备地址时右移1位再发送,此时i2c输出波形终于正常了。 

 查阅数据手册,再结合阿波罗底板原理图,使用i2c发送0x01即可控制P0角输出高电平(蜂鸣器不叫),发送0x00蜂鸣器鸣叫;

 PCF8574T数据手册

 

标签:RT,PCF8574T,i2c,Thread,iic2,bus,msg,rt
From: https://www.cnblogs.com/jiayezi/p/17508947.html

相关文章

  • elementui admin项目中使用echarts
    1.引入依赖npminstallecharts--save2.在template中写<template>  <div>   <el-card>    <divid="mychart":style="{height:height,width:width}"></div>   </el-card>  </div></t......
  • STM32 USART1 改成 UART4 出现问题
    STM32USART1改成UART4出现问题群里面叫了半天,野火胸也不出来,那么久没有办法了,我自己发个帖子解决下问了一下度娘,网上有很多关于stm32uart4的问题,有时进不去串口中断的,有发送乱码的,那么我就在这里总结一下首先我们看一下文档我用的stm32f103vet6的,所以USART是模式是3+2,......
  • 什么是 SAP UI5 应用运行时加载的 messagebundle_en.properties 文件?
    在SAPUI5应用程序中,messagebundle_en.properties文件是一个资源文件,用于存储应用程序的多语言文本和消息。这些消息通常包括用户界面中显示的标签、按钮文字、提示信息、错误消息等。使用资源文件的优势在于它可以轻松地使应用程序支持多种语言,同时保持代码的整洁和可维护性。......
  • SAP UI5 应用里 /sap/ui/thirdparty/datajs.js 的作用
    SAPUI5是一个基于JavaScript的用户界面技术,用于构建企业级应用程序。它是一个成熟的开源框架,由SAP开发,致力于提供高质量、可扩展和易于维护的Web应用程序。SAPUI5应用程序使用一系列技术和库,其中之一就是/sap/ui/thirdparty/datajs.js。在本文中,我们将详细讨论datajs.......
  • 容器管理工具portainer安装
    dockerrun-d-p9000:9000--nameportainer--restart=always--privileged=true-v/var/run/docker.sock:/var/run/docker.sock-vportainer_data:/dataportainer/portainer 下面是添加node节点   ......
  • VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator-翻译
    摘要:本文介绍了一种单目视觉惯性系统(VINS),用于在各种环境中进行状态估计。单目相机和低成本惯性测量单元(IMU)构成了六自由度状态估计的最小传感器套件。我们的算法通过有界滑动窗口迭代地优化视觉和惯性测量,以实现精确的状态估计。视觉结构是通过滑动窗口中的关键帧来维护的,而惯性......
  • Freertos学习06-任务堆栈
    一、前言在FreeRTOS中,每个任务都有自己的堆栈,用于存储任务执行期间使用的局部变量和函数调用。堆栈的大小在任务创建时指定,如果任务使用的堆栈空间超过了指定的大小,就会发生堆栈溢出错误。二、介绍1.堆栈分配xTaskCreate()为任务分配堆栈大小,但是需要注意的是,usStackDept......
  • 将 SmartAssembly 与单文件可执行文件一起使用 (.NET Core 6)
    .NETCore6引入了创建单文件可执行文件的功能。这只允许分发一个应用程序文件,因为所有配置和依赖项都包含在二进制文件本身中。该功能为依赖项嵌入提供了一种本机方法,这在发布生成数百个程序集的独立应用程序时最有益。它可用于依赖于框架或自包含的应用程序,但在这两种情况下都......
  • RAKsmart有奖问答,爆款免费领,前30名送随机微信红包!!!
    为更好的了解客户需求及RAKsmart自信不足,即日起,RAKsmart将推出有奖问卷调查,参与问卷调查即可领取SV1024MVPS使用一个月,同时,前30名参与问卷调查,可领取微信随机1~10元不等,送完即止,快来参与吧!活动时间:美国西岸圣何塞时间 06/26/2023~07/10/2023问卷调查地址:https://www.wenjuan.com/......
  • java springboot3 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are requir
    老版本的mybatis-plus未适配springboot3解决办法:在pom.xml修改 mybatis-plus-boot-starter版本<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><vers......