文章目录

  • 前言
  • AdcHwUnit
    • AdcGroup
      • Channel Emux Select
      • Group Access Mode
        • 配置
        • 结果指针初始化
        • 结果访问
        • 读取buffer中的结果
      • Group Buffer Marker
      • Group Conversion Mode
      • Group Id
      • Group Priority
      • Group Replacement
      • Group Request Source
      • AdcGroupTriggSrc
      • AdcHwTrigSignal
      • Hw Gate Signal
      • AdcStreamingBufferMode
      • AdcStreamingNumSamples
      • Group Definition
  • AdcGeneral
    • AdcEnableStartStopGroupApi
    • AdcPriorityImplementation
    • AdcReadGroupApi
    • AdcResultAlignment
  • 实际使用示例
    • 初始化
    • 循环开始Group转换
    • 通过buffer读取转换结果
  • 总结

前言

上一篇关于ADC的文章介绍了AdcChannel的配置Autosar MCAL-ADC详解(一)-基于Tc27x的cfg软件,本文继续介绍Autosar ADC的其他配置项。

AdcHwUnit

AdcGroup

AdcGroup也是Autosar规范中的配置项,传送门,属于AdcHwUnit的子配置项。该Group并不是芯片硬件中的Group,Autosar AdcGroup中包含了AdcHwUnit定义的AdcChannel,Adc的转换模式,触发方式等。

Channel Emux Select

该配置是外部输入信号作为扩展的ADC通道,可以映射到AdcChannel上,作为外部多通道转换。具体可以参考芯片手册,目前没有用到。

Group Access Mode

该配置项是Autosar定义的标准配置,有single和streaming两种模式。


streaming模式不允许在one-shot模式下软件触发时使用

single模式:直接访问

streaming模式:缓存访问

Autosar标准中给的示例:

配置


Group1包含2个通道CH0和CH1,结果存放在指针G1_ResultPtr中,访问模式为streaming,每个通道采样缓存大小为3
Group2包含2个通道CH2,结果存放在指针G2_ResultPtr中,访问模式为streaming,每个通道采样缓存大小为2
Group3包含2个通道CH3,结果存放在指针G3_ResultPtr中.访问模式为single,每个通道采样缓存大小为1,即不缓存。

结果指针初始化


使用API函数Adc_SetupResultBuffer初始化结果指针,该函数初始化结果指针以指向指定的应用程序结果缓冲区

结果访问


调用Adc_GetStreamLastPointer来访问结果缓冲区中最新转换轮的结果

读取buffer中的结果


调用Adc_ReadGroup,它将结果从结果缓冲区复制到可选的读缓冲区
上面这些数组不是从0开始的,不是表示C语言数组,这里应该只是一个示例,G1读取每个通道buffer2的数据,G2和G3读取每个通道buffer1的数据(G3只有一个buffer,实际没有缓存)

在Tc27x系列SIP包MCAL中,没有实现该功能(c代码中没有定义streaming模式)。只有single模式。

Group Buffer Marker

定义每个通道的buffer,与streaming模式一起使用。
cfg中配置Group Access Mode和Group Buffer Marker:

Group Conversion Mode

该配置项是Autosar定义的标准配置,有ONESHOT和CONTINUOUS两种模式。

ONESHOT:触发一次,转换一次

CONTINUOUS:触发一次后连续转换,不需要再触发

Autosar标准中定义:


注意:连续转换模式只能在软件触发的组中使用

Autosar标准中给的示例:

例1:连续转换模式配置了包含通道[CH0, CH1, CH2, CH3, CH4]的通道组。完成每次扫描后,调用notification(如果启用)。然后会自动启动新的扫描。

例2:以One-Shot模式配置了包含通道[CH0, CH1, CH2, CH3, CH4]的通道组。完成扫描后,调用notification(如果启用)。

例3:连续转换模式配置了包含通道[CH3]的通道组。完成每次扫描后,调用notification(如果启用)。然后会自动启动新的扫描。

例4:以OneShot转换模式配置包含通道[CH4]的通道组。完成扫描后,调用notification(如果启用)。


cfg中配置转换模式:

Group Id

该配置项也是Autosar标准配置。

组的ID号。这个参数是要在API上使用的符号名称。这个符号名称允许访问通道组数据。

该值将分配给AdcGroup容器shortName派生的符号名。
每个ADC Hw单元的ID范围:

ADC0:0至31

ADC1:32至63

ADC2:64至95

ADC3:96至127

ADC4:128至159

ADC5:160至191

ADC6:192至223

ADC7:224至255

ADC8:256至287

ADC9:288至319

ADC10:320至351

注意:该值将由工具自动生成,用户应使用符号名称(即AdcGroup容器名称)引用组。

cfg中配置Group Id:

Group Priority

该配置项也是Autosar标准配置。

cfg中此参数仅在考虑HW_SW_PRIORITY时有效(在AdcGeneral中配置)。
最大值限制为254,因为优先级255被分配给带有HW触发源的Adc channel group。该配置非寄存器实现,应该由软件实现。

cfg中配置Group Priority:

Group Replacement

该配置项也是Autosar标准配置。


替换机制,Group转换过程中可以被具有更高优先级的Group中断。

ADC_GROUP_REPL_ABORT_RESTART:如果一个Group被更高优先级的Group中断,则在Group级别上使用中止/重启机制。在高优先级组转换完成后,中断的Group(所有Group通道)的完整转换循环将重新启动。如果Group配置为streaming模式,则只丢弃中断转换轮的结果。已经写入结果缓冲区的以前转换轮的结果不受影响。
ADC_GROUP_REPL_SUSPEND_RESUME:挂起/恢复机制用于Group优先级,如果一个Group被更高优先级的Group中断。中断Group的转换轮(所有Group通道的转换)在高优先级Group转换完成后完成。如果组配置为streaming模式模式,则只丢弃中断转换轮的结果。已经写入结果缓冲区的以前转换轮的结果不受影响。

目前cfg只支持第一种,也是软件实现的。

cfg中配置Group Replacement:

Group Request Source

该配置项不是Autoasr的标准配置,芯片手册中定义的请求源:

•仲裁槽0:Group Queued source,8级序列的任意顺序

•仲裁槽1:Group Scan source,组内定义顺序的序列
•仲裁槽2: Background Scan source,定义顺序的序列,所有组
•最后一个仲裁槽:Synchronization source,来自另一个ADC内核的同步转换请求(总是在同步从内核中以最高优先级处理)


与cfg中的对应:


REQSRC0_8STG_QUE对应Group Queued source,REQSRC1_NCH_SCAN对应Group Scan source,REQSRC2_BGND_SCAN对应Background Scan source,在寄存器中有GxARBPR.PRIO0-2设置请求源优先级,GxARBPR.ASENy设置是否使能对应的slot.

AdcGroupTriggSrc


ADC_TRIGG_SRC_HW:硬件触发Group转换

ADC_TRIGG_SRC_SW:软件API触发Group转换

AdcGroupConvMode:对于连续转换模式,触发源HW不可用

cfg中配置:

AdcHwTrigSignal


只有在AdcGroupTriggSrc配置为ADC_TRIGG_SRC_HW时才有效
ADC_HW_TRIG_BOTH_EDGES:在硬件触发信号的两边反应(仅当ADC硬件支持时)。

ADC_HW_TRIG_FALLING_EDGE:在硬件触发信号的下降边缘上做出反应(仅当ADC硬件支持时)。

ADC_HW_TRIG_RISING_EDGE:在硬件触发信号的上升边缘上进行响应(仅当ADC硬件支持时)。

此处我们配置的SW触发,不需要配置该项。

Hw Gate Signal

此处我们没有用到HW Request source,选择NONE。

AdcStreamingBufferMode

该配置项是Autosar标准配置


将流缓冲区配置为“线性缓冲区”(即,一旦流缓冲区满,ADC驱动程序就会停止转换)或“环形缓冲区”(如果到达流缓冲区的末端,则环绕)。
该配置项需要与前面的Group Access Mode配合使用,在前面我们没有选择streaming模式,此处选择Linear模式。

cfg配置:

AdcStreamingNumSamples

该配置项是Autosar标准配置


在streaming访问模式下,每个通道要获取的ADC值的数量

注意:在single access mode下,该参数取值为1,因为每个通道只处理一个采样值。
我们之前配置的Group Access Mode为single access mode,此处只能配置为1.

cfg配置:

Group Definition

定义Group中包含的Channel.

AdcGeneral

该配置是Autosar标准配置,本文只列出关键几个配置项

AdcEnableStartStopGroupApi

使能该API函数实现Group转换

true:可以使用Adc_StartGroupConversion()和Adc_StopGroupConversion()。

false:不能使用Adc_StartGroupConversion()和Adc_StopGroupConversion()。
cfg配置:

AdcPriorityImplementation


确定转换请求的优先级机制是否可用,如果可用,则确定优先级机制的类型。该选择适用于具有触发源软件和触发源硬件的组。可以选择两种类型的优先级机制。硬件优先级机制(AdcPriorityHw)使用ADC硬件特性对软件转换请求和具有触发源硬件的组的硬件触发信号进行优先级排序。硬件和软件混合优先级机制(AdcPriorityHwSw)使用ADC硬件特性对具有触发器源硬件的组进行ADC硬件触发器的优先级排序,并使用软件实现的优先级机制对具有触发器源软件的组进行优先级排序。软件触发组的组优先级通常配置为低于硬件触发组的组优先级级别。

此处我们主要使用软件触发,选择AdcPriorityHwSw

cfg配置:

AdcReadGroupApi

使能该API来获取Group中的转换结果


cfg中配置:

AdcResultAlignment

选择数据对齐方式,左对齐或右对齐


右对齐(right-alignment ),即向右侧LSB为对齐;

左对齐(left alignment ),即向左侧MSB位对齐
例如十位数据右对齐:


左对齐:


cfg中配置:

实际使用示例

初始化

使用Adc_SetupResultBuffer函数设置Group result buffer

** Syntax           : Std_ReturnType Adc_SetupResultBuffer                    **
**                    (                                                       **
**                      Adc_GroupType Group,                                  **
**                      Adc_ValueGroupType* DataBufferPtr                     **
**                    )                                                       **

输入参数为Group id和result buffer(有多少通道就设置多少数组长度)

循环开始Group转换

使用Adc_StartGroupConversion函数开始Group转换,该函数周期性调用。

通过buffer读取转换结果

转换完成的数据保存在DataBufferPtr中,读取该指针的数据即可获取转换结果。也可以通过Adc_ReadGroup函数获取Group转换结果。

规范中给的示例读取流程:

总结

以上关于ADC的配置及使用就介绍完了。后面介绍SPI的配置和使用.

参考资料:

Infineon-TC27x_D-step-UM-v02_02-EN.pdf

Infineon-TC27xDC-DataSheet-v01_00-EN.pdf

AURIX™公开课第15讲-逐次逼近模数转换器SAR ADC

若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~

你的鼓励是对小弟的最大支持~~~

建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新

Autosar MCAL-ADC详解(二)-基于Tc27x的cfg软件相关推荐

  1. 智能城市dqn算法交通信号灯调度_博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型...

    原标题:博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型 国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共 ...

  2. 技术详解:基于人脸识别的 AI 弹幕

    --------点击屏幕右侧或者屏幕底部"+订阅",关注我,随时分享机器智能最新行业动态及技术干货---------- 有时候,弹幕比剧情还精彩,那些脑洞大开.观点鲜明的弹幕,可以 ...

  3. Android面试Hash原理详解二

    Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...

  4. 决策树详解python基于Kaggle的Titanic数据实现决策树分类

    决策树详解&&python基于Kaggle的Titanic数据实现决策树分类 一 决策树算法详解 1.前期准备 实验目的准备 2.决策树概述 2.1 决策树 2.2 ID3算法原理 2 ...

  5. PackageManagerService启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?

    PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理? Android PackageManagerService系列博客目录: PKMS启动详解系列博客概要 PKM ...

  6. 《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)网购链接

    <Linux设备驱动开发详解:基于最新的Linux 4.0内核> china-pub   天猫     dangdang   京东 China-pub 8月新书销售榜 推荐序一 技术日新月 ...

  7. 互斥量、条件变量与pthread_cond_wait()函数的使用,详解(二)

    互斥量.条件变量与pthread_cond_wait()函数的使用,详解(二) 1.Linux"线程" 进程与线程之间是有区别的,不过linux内核只提供了轻量进程的支持,未实现线 ...

  8. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  9. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

最新文章

  1. python篮球-用Python让蔡徐坤在我的命令行里打篮球!|附完整代码
  2. 路由(一)——路由原理及静态路由
  3. Redis failover过程
  4. 多项目开发下的dll文件管理
  5. 【翻译】Sencha Cmd中脚本压缩方法之比较
  6. 【飞控理论】从零开始学习Kalman Filters之一:Kalman Filters的常见用途、什么是状态观测器?
  7. DVWA-CSRF-low级别
  8. 大数据系列2-liunx基础-2基本操作
  9. php表决器代码,adder3 此源代码是基于Verilog语言的七人投票表决器 、2 个 联合开发网 - pudn.com...
  10. 腾讯云微搭x腾讯文档,企业协同研发更便捷
  11. pandas中关于nan的处理
  12. HDU 1998奇数阶魔方
  13. uuuuuuuuuu
  14. Word 2016 如何设置黑底白字
  15. 为PLOG增加了三套模板
  16. 图片搜索 拍立淘 按图搜索以图搜索 图搜商品 同款搜索商品
  17. C++程序员发展方向有哪些?
  18. win10增加matlab虚拟内存,详细教你win10如何增加虚拟内存
  19. python3.8安装包下载,适用于win7,win10
  20. 3.Mapper.xml 详解

热门文章

  1. DbVisualizer 解决注释中文乱码问题
  2. 分享117个HTML个性简实模板,总有一款适合您
  3. python怎么另存为_python如何IE另存为附件
  4. python event对象
  5. 李永乐讲通信与计算机专业,哈工大通信与信息工程18考研经验分享
  6. 论文的每一页最上方都有一条横线(word2007)
  7. 0x0报错解决--win11预览版升级报错0x0的快速解决方案
  8. 【实战】物联网安防监控项目【5】———把模拟数据传输到web网页、web显示mjpeg-streamer视频图像
  9. html5网页制作心得体会,网页设计课程学习心得总结
  10. Vue3中TSX和h函数的用法