infieon TriCore架构 TC1784 ADC使用方法(含DMA方式)

一、写在前面

       STM32单片机使用时间较长,所以使用TC1784后,很多功能实现就想移植之前STM32的。比如本文提到的 采用DMA方式的ADC采集。

二、准备工具

        1、tasking (TASKING VX-toolset for TriCore and PCP v3.5r1)

        2、DAvE  (DAvE 2.2r2)

        3、LAUTERBACH仿真器 配合 仿真上位机(TRACE32 PowerView for Tricore release sep 2019(64-bit) R.2019.09.000114442)

三、开发历程

0、ADC采集(顺序请求源方式)  测试硬件OK 相应通道有数据反映

1)DAvE  配置顺序请求源(Sequential source 0)    配置通道   顺序请求源门控打开

2)使用DAvE生成ADC0.C ADC0.h文件

3)启动转换 读取转换结果
    ADC0_vStartSeq0ReqChNum(0,0,0,ch);
    ADC0_vSeqSoftTrigger(0);
    while(ADC0_uwBusy());

    RESRD = (uword volatile *) 0xF01011C0;
    RESR  = (uword volatile *) 0xF0101180;
    RESRD += ch;
    RESR  += ch;

    if ( (*RESRD) & 0x80000000 )
    {
        resl = (*RESR) & 0x00003fff;
        Analog_Ch[ch] = resl;
    }

1、ADC采集(扫描请求源方式)

1)DAvE  配置扫描请求源(Parallel source  1)  配置通道   扫描请求源门控打开  使能自动扫描  使能扫描源中断(SENPx) 选择SR0  (注:该SR0使能 仅仅为了 硬件触发DMA使用 并不真正使用中断  对于此理解 强烈建议查看 UM中的  中断框图)

2)使用DAvE生成ADC0.C ADC0.h文件

3)启动转换 读取转换结果

/ADC0.C 初始化完成后 添加以下代码

ADC0_vStartParReqChNum(0xFFFF, ADC_SOURCE_1);

ADC0_vSetLoadEvent(SOURCE_1);

//LAUTERBACH仿真上位机  查看ADC转换结果及工作状态

CPU——》Peripherals——》ADC ADC0 Result Registers

2、DMA测试   内存到内存搬移   ADC结果寄存器到内存搬移

1)DAvE  Block0  配置DMA Channel 00

配置DMA Channel 00

Channel Control

CHMODE  连续转换模式   使能硬件触发(ECH00)  选择ADC_SR00(ADC)【确保步骤1可以触发该信号  也可以使用软件触发DMA方式 待研究】

Address Control

根据实际填写   源地址SADR  目标地址DADR   对应的地址循环长度(CBLS CBLD ) 对应地址的增加模式(INCS INCD)

注:a)tricore的地址循环长度,是一个大坑,这里仅仅用于指示源地址或者目标最低几位变化情况,请查看相关CBLS CBLD理解 

        b)tricore对于地址访问有很强的保护 当然 后果就是调试时一直测试不通过。准确了解将要使用的  源地址与目标地址范围【当初发现该问题 是内存到内存测试是  DMA_ERRSR  ME0SER 位指示了错误

比如  源地址 ADC0结果寄存器(地址 0xF0101180) 内存地址(程序数组标量)(0xD0009000-0xD0009040 )

根据这些信息 配置下一步 Memory 0

配置DMA  Memory0

a)配置AENx     勾选ADC0、ADC1  用于 ADC0结果寄存器(地址 0xF0101180)  勾选DMI,DMI Image用于   内存地址(程序数组标量)(xxxxx  注意步骤2 ) 

b)仅仅勾选 DMI,DMI Image  对于 内存地址(程序数组标量)还不够  还需要选择  DMI SIZE调整为 128kBytes  才能将内存地址(0xD0009000-0xD0009040 )覆盖

注:DMI SLICE  有点小坑  强烈建议查看UM 理解内存地址范围

2)使用DAvE生成DMA.C DMA.h文件

3)  代码中不要额外 添加代码 等待ADC0触发即可工作

3、集成工作  ADC采集16个通道 (DMA方式)

集成步骤1 步骤2 工作,即可实现ADC DMA采集。

调试注意点:

单个结果寄存器4字节  16通道  共64字节 = 4*16    CBLS CBLD均选择64字节

源地址及目标start地址均应为64字节整数倍

比如 内存地址(程序数组标量)(0xD0009000-0xD0009040 )  在tasking定义方式如下

uword ADC0_raw_u32[16] __at( 0xD0009000 ); 注意 __at( xxx )里xxx前后一定要加空格

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Tasking VX-Toolset for Tricore v4.3r3是一个用于Tricore处理器的开发工具套件。Tricore处理器是一种由英飞凌半导体公司开发的32位嵌入式处理器,主要用于汽车电子和工业自动化等领域。 Tasking VX-Toolset为Tricore处理器提供了一套完整的开发工具,包括编译器、调试器和仿真器等。编译器可以将高级语言代码转换为Tricore处理器可执行的二进制代码,以实现软件的开发和调试。 调试器是Tasking VX-Toolset中的一个重要组成部分,可以帮助开发人员对Tricore处理器上运行的代码进行单步调试、跟踪变量和寄存器的值,以及监控程序的执行过程。通过调试器,开发人员可以更加方便地定位和修复程序中的错误。 仿真器是另一个重要的工具,可以模拟Tricore处理器的行为,以便在开发阶段对代码进行测试和验证。开发人员可以使用仿真器运行和调试软件,而不需要实际的硬件设备。这样可以大大简化开发过程,提高软件的可靠性和稳定性。 总之,Tasking VX-Toolset for Tricore v4.3r3是一个功能强大的开发工具套件,适用于Tricore处理器的软件开发和调试。它提供了编译器、调试器和仿真器等工具,帮助开发人员在开发过程中更高效地进行代码编写、调试和测试。同时,这个工具套件还可以提升软件的可靠性和稳定性,使Tricore处理器在汽车电子和工业自动化等领域的应用更加安全可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值