前言
mcal的作用是隔离硬件,对上提供统一的标准接口。前面的mcal_adc文章<>已经基于renesas rh850芯片详细介绍过adc模块了,由于最近开始使用infineon tc3xx芯片,在配置adc模块的时候发现adc模块对上提供的标准接口是一样的,在切换芯片的时候,iohwab_adc模块基本不用修改,但是对于具体adc模块的配置,和芯片特性强相关的地方还是有很多地方(autosar mcal标准定义的配置项都是一样的),本文将详细介绍基于infineon tc3xx芯片mcal_adc模块特有的一些配置功能。
正文
1.tc377芯片adc硬件资源
在配置一个mcal模块的时候主要关注这个模块的三个特性:
1)adc硬件单元:adc模块有多少个adc硬件单元unit,每个unit有多少个通道channel,这样我们就可以知道这个adc模块最大可以配置多少路adc数据了。
2) adc时钟源: 知道adc时钟源和可以使用的分频系数就可以知道adc模块最大/小的使用时钟频率了(时钟频率在adc模块作用不是特别明显,在配置pwm/icu模块的时候就非常重要)。
3) adc中断源: 使用adc转换完成中断的话就需要知道使用的中断源,也就是每个unit/group的中断号,这个中断号在配置os的isr的时候需要用到。
note: 如果是新手的话,查看tc3xx系列芯片共有的特性应该查看下图的文档:
查看tc37x具体芯片的硬件资源情况需要查看下图的另一份文档:
两份文档需要结合起来看,才能找到自己想要的东西。
1. 1adc硬件单元
tc37xx有8组adc采集单元,group0-8是primary groups,group8-11是secondary groups,每组primary group有8个channels,每组secondary group有18个channels,总共可以同时采集8*4 + 16*4 = 96路adc值。
1.2.adc时钟源
adc模块使用fadc作息模块参考时钟,fadc的具体配置在mcu模块(后面分析tc3xx mcu模块的时候再具体分析)。
1.3 adc中断源
group0-3的isr中断地址计算公式为:0x670 + x*0x10 + y*0x4,其中x为group号,也就是0/1/2/3,y是选择那一路service request输出。
那这个y值怎么确定?-- 见下文分析
group 0可以配置使用g0sr0-3中的一路作为中断输入请求信号。
通过配置gxsevnp寄存器的sevinp位域可以选择使用那一路service request line。
不过需要注意的是在eb的mcal_adc配置项里面没有关于每个group的service request的配置项,所以gxsevnp寄存器的sevinp位域为默认值0。
综上所诉,我们得出group0使用的中断服务的地址为:
group0的isr中断地址:0x670 + 0*0x10 + 0*0x4 = 0x670,其他group使用的中断服务的地址以此类推。
2. tc3xx mcal特有的配置
2.1 external multiplexer control
在tc3xx的adc模块的general配置属性里面有关于emux相关的配置选项,这些配置参数不是autosar_mcal标准定义的,是tc3xx芯片特有的。
从上文可以 得知tc37x总共可以同时采集96路adc,如果项目中采集的adc超过96路(芯片引脚又足够用)该怎么办?-- 换更多pin脚的芯片显然不划算,那就可以考虑tc3xx的evadc模块硬件实现的外部多路复用器的功能,简单的来讲,就是使用一路adc通道可以采集最多八路的adc信号,具体由emux相关寄存器配置实现。
一般情况,adc通道足够,在配置mcal_adc的时候不用配置emux,了解有这个特性即可。
2.2 input class register
在adc 模块的顶层配置容器里面有一个全局(global)的配置容器adcglobalinputclass。
在adchwunit配置容易下面有一个adchwunitinputclass的子配置。
adcchannel配置容器下的每一路channel都会引用一个adcinputclass,可以选择globl的inputclass,也可以选择每一个hwuinit下的input class。
那这个input class 到底是什么了? -- 查看芯片手册
配置input class其实就是配置gxlclassi和globiclassi系列寄存器。
翻译过来就是:全局输入类寄存器为通过其通道控制寄存器gxchctry中的位字段iclsel选择它们的相应组的每个通道定义采样时间和数据转换模式。
翻译过来:特定于组的输入类寄存器为通过其通道控制寄存器gxchctry中的位字段iclsel选择它们的任何组的每个通道定义采样时间和数据转换模式。
也就是说input class在配置每个adcchannel的采样时间、转换模式(具体哪些模式可以参考芯片手册)、预充电时间等输入属性,个人觉得如果没有特殊性能要求的话,这些可选属性维持默认配置就可以了。
3.总结
现在的芯片手册基本都快上万页了,在接触一块新的芯片的时候先把芯片手册看完,基本是不可能的,就算看完也记不住,所有只有等需要解决疑惑的时候带着问题的查手册,才是比较合适的学习方法。
美光与三星电子间的科技差距日益增大,毛利率将受冲击?
苹果将在越南建立Mac生产线
总投资26亿元!德赛电池投资建设物联网电源高端智造项目
500亿芯片巨头爆雷!澜起科技营业收入同比大降51.87%,净利润同比大降87.98%
电动车电池温度随环境、行驶里程、行驶工况下的变化规律分析
AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模块
戴尔OptiPlex5050主机评测 绝对称得上是一台小巧与速度同行的商务主机
来看看蓝牙Beacon都有哪些功能和技术参数
ADI推出一款同步四输出降压型稳压器
5G时代来临 选择属于您的Cloud X运营模式
TH-OCR文字识别系统介绍
华为荣耀v9很好但略有缺陷,努比亚新机实力秀人像美颜
为什么芯旺微会从生产工业级MCU转变为以车规级MCU为主呢?
全志科技T3A40i核心模块支持实时PREEMPT Linux,助力工业机器人控制!
KT404A语音芯片U盘更新语音方案说明
中国联通助力“5G智慧医疗云”上线,5G推动远程医疗走上高速路
锐捷网络正是发布了2020年云数据中心产品的发展闹战略
全车音质大升级 尼桑途乐改装芬朗汽车音响
2021年面板的终端需求仍将维持高档
中移动PTN设备测试规模全球最大