EB tresos 配置I2c - 实现与PF8200的读写操作

news2024/11/20 15:32:03

文章目录

  • 前言
  • 一、EB工具链配置
    • 1、I2c模块
      • 1)新建模块
      • 2)配置General
      • 3)配置I2cChannel
    • 2、Port模块
      • 1)配置SDA
      • 2)配置SCL
  • 二、代码分析
    • 1、申明一个I2c配置结构体数组,用于I2c所有读操作。
    • 2、搭建读操作函数
  • 三、测试验证
  • 总结


前言

最近领导要求I2c从软件模拟实现变更为硬件I2c实现。但是网上一搜索全是要钱的。心有不甘于是我自己小研了一下,也实现了,没啥大难点!!!
IIC实现方式一般有两种:
①, 基于硬件实现IIC通信(硬件GPIO引脚配置为I2c复用引脚)
②, 基于软件模拟IO实现IIC通信(代码控制SDA和SCL两个IO引脚的电平来模拟IIC时序)

本文章基于64pin的恩智浦 S32K146型号的芯片作为主机,从机是NXP的供电芯片PMIC(PF8200)
在本次实验中,我们将以使用EB工具链来配置硬件IIC通信。

具体实现流程包括如下几点:
1, EB配置 2, 代码编写 3, 测试验证

在这里插入图片描述

话不多说,走你~

一、EB工具链配置

1、I2c模块

1)新建模块

在EB工具中,新建I2c模块。如下图:
在这里插入图片描述

2)配置General

在这里插入图片描述①, 在AutoSar的配置工具中,常常看见PostBuild、Precompile、Linktime这三个影子。具体描述可以参考下面这篇博客。
链接地址

②, 开发者错误检测,常用于开发调试时候,当模块运行是出现了错误,会通过DET模块报错并使栈指针定位了DET模块的报错函数,可查看IIC出现了什么故障类型并进行维护。一般在软件释放时,应该取消该选项。

③, 是否使用DMA传输功能,勾选之后应该在MCL模块进行配置DMA通道。图片上我虽然勾选了,实际上并没有在MCL进行配置。用户可根据需求在选择。

④, 定义Timeout定时器。

3)配置I2cChannel

在这里插入图片描述
I2cChannelId:0
I2cHwChannel:LPI2C_0
I2cMasterSlaveConfiguration:MASTER_MODE(MCU配置为主机模式)
I2cOperatingMode:LPI2C_STANDARD_MODE(标准模式,通信频率100khz)

在这里插入图片描述

①: 选择MCU模块配置好的时钟源(选择SIRC时钟源)
在这里插入图片描述

②: 选择IIC使用中断模式
③④ 两步骤都是为了配置出I2c的波特率100Kh。芯片手册有描述,如下图。详情见芯片手册。
在这里插入图片描述

2、Port模块

1)配置SDA

在这里插入图片描述

2)配置SCL

在这里插入图片描述
到此为止EB配置工作已经完成了,生成I2c,Port相关的代码文件。并集成到工程中。 MCAL的IIC静态代码I2c_TS_T40D2M10I1R0SW32K1_RTD_4.4_1.0.1中复制到工程中。

~

二、代码分析

从机设备地址:0x10
从机设备ID:0x48
从机设备ID寄存器:0x00
任务目标:通过使用I2c读取从机的设备ID号。带CRC校验功能的IIC读写操作。

I2c模块的读写操作共同使用同一个函数接口:

Std_ReturnType I2c_SyncTransmit(uint8 Channel, const I2c_RequestType * RequestPtr)

重点解析第二个形参,I2c配置结构体变量。
在这里插入图片描述

1、申明一个I2c配置结构体数组,用于I2c所有读操作。

在这里插入图片描述
从机地址0x10必须向右移位1bit 0x10 >> 1u(0x08u)
结构体数组中的第一个成员用于写从机地址和寄存器地址,实现与从机建立握手。
结构体数组中的第二个成员用于读取寄存器的数据,并存储在ReadDataBuf中。

2、搭建读操作函数

I2c读寄存器数据通用接口,读取任何寄存器的数据,可以通过调用该接口
在这里插入图片描述
读PMIC设备地址的函数:
在这里插入图片描述

~
到此,代码编写就结束了,编译进行验证结果

三、测试验证

参考PF 8200的数据手册可知,读取寄存器数据的时序如下图
在这里插入图片描述
串口打印信息:
在这里插入图片描述
示波器测试数据:
在这里插入图片描述
Tips:
上图中,SDA有三条细细的上升波形。目前原因还未找到。都是在MCU收到从机的响应位之后产生的,并未对MCU采集数据产生影响。如果有谁也遇到过这情况并解决了,可以分享以下哈!

~

总结

写操作比较简单,只需要申明一个I2c配置结构体变量即可。
博主是AutoSar小白,刚开始接触NXP芯片,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在后面的博文再相会哈~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1337703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitLab 删除或移动项目

首先明说,删除后无法恢复 第一步:找到要删除的项目 第二步:进入目录后,左侧菜单,设置 >>> 通用,拉到最下面找到“高级”,点击右侧“展开” 第三步:点击“展开”后往下拉&a…

亚马逊云科技 re:Invent 2023 产品体验:亚马逊云科技产品应用实践 王炸产品 Amazon Q,你的 AI 助手

意料之中 2023年9月25日,亚马逊宣布与 Anthropic 正式展开战略合作,结合双方在更安全的生成式 AI 领域的先进技术和专业知识,加速 Anthropic 未来基础模型的开发,并将其广泛提供给亚马逊云科技的客户使用。 亚马逊云科技开发者社…

Python 实现Excel和CSV之间的相互转换

通过使用Python编程语言,编写脚本来自动化Excel和CSV之间的转换过程,可以批量处理大量文件,定期更新数据,并集成转换过程到自动化工作流程中。本文将介绍如何使用第三方库Spire.XLS for Python 实现: 使用Python将Exc…

ServletConfig对象.

是什么 ServletConfig是javax.servlet.包下的一个接口,ServletConfig它是Servlet的一个配置对象; ServletConfig是由tomcat容器创建,通过init方法传入给Servlet; ServletConfig对象如何获取? 在GenericServlet里面定义了&#x…

根据DCT特征训练CNN

记录一次改代码的挣扎经历: 看了几篇关于DCT频域的深度模型文献,尤其是21年FcaNet:基于DCT 的attention model,咱就是说想试试将我模型的输入改为分组的DCT系数,然后就开始下面的波折了。 第一次尝试&#xf…

【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合

一、背景介绍 二、正文 OpenFeign是什么? OpenFeign(简称Feign)是一个声明式的Web服务客户端,用于简化服务之间的HTTP通信。与Nacos和Ribbon等组件协同,以支持在微服务体系结构中方便地进行服务间的通信&#xff1b…

互联科技:全域托管云赋能百行百业的数字化转型

在这个数字经济时代,云计算技术为企业提供了更加高效的业务管理机会,百行百业加速上云。对比几种云网方案,目前公有云方案存在可控性低、数据暴露风险、个性化需求难以满足、服务受限等问题;私有云方案存在建设成本高、建设周期长…

TCP服务器的演变过程:IO多路复用机制select实现TCP服务器

IO多路复用机制select实现TCP服务器 一、前言二、新增使用API函数2.1、select()函数2.2、FD_*系列函数 三、实现步骤四、完整代码五、TCP客户端5.1、自己实现一个TCP客户端5.2、Windows下可以使用NetAssist的网络助手工具 小结 一、前言 手把手教你从0开始编写TCP服务器程序&a…

文献研读|Prompt窃取与保护综述

本文介绍与「Prompt窃取与保护」相关的几篇工作。 目录 1. Prompt Stealing Attacks Against Text-to-Image Generation Models(PromptStealer)2. Hard Prompts Made Easy: Gradient-Based Discrete Optimization for Prompt Tuning and Discovery&#…

Linux - 记录问题:怎么通过安装包的方式安装gRPC

适用场景 当docker 构建环境不能链接到github 的时候,就可以使用本地构建的方式 完成对应服务的构建需求。 参考案例 使用本地安装包的方式安装 gRPC 注意: 在Docker构建过程中,某些软件包可能会尝试配置时区,这通常需要交互式…

性能优化,让用户体验更加完美(渲染层面)

前言 上一篇我们已经围绕“网络层面”探索页面性能优化的方案,接下来本篇围绕“浏览器渲染层面”继续开展探索。正文开始前,我们思考如下问题: 浏览器渲染页面会经过哪几个关键环节?“渲染层面”的优化从哪几方面着手&#xff1f…

智能三维数据虚拟现实电子沙盘

一、概述 易图讯科技(www.3dgis.top)以大数据、云计算、虚拟现实、物联网、AI等先进技术为支撑,支持高清卫星影像、DEM高程数据、矢量数据、无人机倾斜摄像、BIM模型、点云、城市白模、等高线、标高点等数据融合和切换,智能三维数…

Git基础学习_p1

文章目录 一、前言二、Git手册学习2.1 Git介绍&前置知识2.2 Git教程2.2.1 导入新项目2.2.2 做更改2.2.3 Git追踪内容而非文件2.2.4 查看项目历史2.2.5 管理分支🔺2.2.6 用Git来协同工作2.2.7 查看历史 三、结尾 一、前言 Git相信大部分从事软件工作的人都听说过…

SadTalker数字人增加视频输出mp4质量精度

最近在用数字人简易方案,看到了sadtalker虽然效果差,但是可以作为一个快速方案,没有安装sd的版本,随便找了个一键安装包 设置如上 使用倒是非常简单,但是出现一个问题,就是输出的mp4都出马赛克了 界面上却…

001、安装 Rust

目录 1. 安装 Rust 2. 安装编译器 Visual Studio Code 3. 更新、卸载、文档命令 4. 结语 1. 安装 Rust 安装 Rust 非常简单,首先进入 Rust官网 ,然后点击右上角的 Install 。 进入 Install 界面, 它会自动识别你当前的操作系统并给你推荐…

自带AI算法的热红外相机

Tofu AIIR 是识别跟踪与热红外成像一体化的模组,支持热红外视频下的多类型物体检测、识别、跟踪等功能。 产品支持视频编码、设备管理、目标检测、深度学习识别、跟踪等功能,提供多机版与触控版管理软件,为二次开发提供了丰富的SDK接口和开源…

Xshell——Windows将本地文件上传到Linux服务器

1、scp命令 scp是基于ssh的网络文件传输命令,可以将本地文件或文件夹直接上传到服务器指定位置。命令格式: 上传文件 scp -P port filepath usernameip:TargetPath 上传文件夹 scp -r -P port filepath usernameip:TargetPath -P port:用于指…

Spark的生态系统概览:Spark SQL、Spark Streaming

Apache Spark是一个强大的分布式计算框架,用于大规模数据处理。Spark的生态系统包括多个组件,其中两个重要的组件是Spark SQL和Spark Streaming。本文将深入探讨这两个组件,了解它们的功能、用途以及如何在Spark生态系统中使用它们。 Spark …

Redis连接报错-Could not connect to Redis at 127.0.0.1:6379: Connection refused

进入Redis所在路径,命令行输入redis-cli报错:Could not connect to Redis at 127.0.0.1:6379: Connection refused 解决方法: redis-server redis.conf 连接成功:

装饰模式(单一责任)

Decorator(装饰模式:单一责任模式) 链接:装饰模式实例代码 解析 目的 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性&#xff…