公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager
你好! 1、CAN的发送,架构构手注册上发件有tx缓冲区模式,fifo模式,和队列模式,实际上在Modusbox的设备配置器里只有TX缓冲区模式,应用手注册里也没有相关说明。希望能有对应的例子或说明文文档。 2,ADC的应用手注册AN234282RI,设备配置器里的截止图和配置代码不一致,无法确定哪个是对的,目前需要使用定时器接触C3整理组合,同样完成使用DMA将数据自动传输到内存中。例如 ADC0 PONDOAD0到通话道10通过定时器接触发动,接触发起一次采集所有整理数据,也完成了接触发起新到一个2维数组的内存。 谢谢谢谢! Alex.wang

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/td-p/672904

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

亲爱的灵灵,

  1. 可以有一个 比比较大的消息 RAM 区域,客户打算使用 Tx FIFO 模式 ,这个在架构中注册里有 介绍, 但没有例程,而且设备设计师里也没有相关的配置选项。
  2. 这个例子客户之后的前面已经经过测试 了,DMA 也用了。 客户主要问题是关于定时器计时器计时器如何接触后来 ADC 组一组 10 个通道进行转换一次,因为每一个通道的都有一个结果寄存器,ADC 组合完成后如何将多个目标地址地址通过 DMA 搬到 2 维数组中。

3 、客户来到,在 STM32 接收一个中断叫空闲中断中,可以通过空闲中断 进行接收的处理,通过 DMA 当前传输的地址和空闲中断通过计算机 共享完成接收。 可以接收不定长度的数据,但是 XMC7200 没找到相关的功能。

 

Alex.wang

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/674282

在原帖中查看解决方案

0 点赞
12 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

3 SCB-UART 下,没有方程使用 DMA 接收不定长度的数据 。中断 的方形一个节的接收效率太低了

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/673480

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

1:

cy_en_canfd_status_t Cy_CANFD_Init(CANFD_Type *TLE9243QK_BASE_BOARD, uint32_t chan,
const cy_stc_canfd_config_t *config,
cy_stc_canfd_context_t *上下文)

这个函数数里面述述的是tx部分没有用过TX fifo和tx队列。

 

 

            /* Configure Tx Buffer and Tx FIFO/Queue */
            CANFD_TXESC(base, chan) = _VAL2FLD(CANFD_CH_M_TTCAN_TXESC_TBDS, config->txBufferDataSize);

            /* Set Tx FIFO/QUEUE (not used):
             *  The Watermark interrupt disabled
             *  Tx Event FIFO disabled
             *  The start address of Tx Event FIFO in Message RAM
            */
            CANFD_TXEFC(base, chan) =
            _VAL2FLD(CANFD_CH_M_TTCAN_TXEFC_EFWM, 0UL) |
            _VAL2FLD(CANFD_CH_M_TTCAN_TXEFC_EFS, 0UL)  |
            _VAL2FLD(CANFD_CH_M_TTCAN_TXEFC_EFSA, _FLD2VAL(CANFD_CH_M_TTCAN_RXBC_RBSA, CANFD_RXBC(base, chan)) +
                                                          (config->noOfRxBuffers * (CY_CANFD_R0_R1_SIZE +
                                                           dataBufferSizeInWord[config->rxBufferDataSize])));

 

 

我想确认一下,你需要使用 fifo 和队列吗?具体的需求是什么?

2:DMA部分:

我给你先生一个测试代码是关于定时器去触发器 1路ADC进行采样,数据发送到DMA。DMA 的部分你不一定要设置 1 个数据,我给你的测试代码是开源的 10 个数据,X 循环为 10 个数据,全部收集到以后的 DMA 产生。这个地方的你可以根据你自己的实际需要进行设置。(二维数组你自己的修改变量配置,参考附件的一维数组)

3:添加部分:

附件的代码是 ADC0 使能有两个路频道,第二路频道是群组结束,采集了结尾以后接触发起的中断,在断里面可以读取取值。

你可以使用 ADC 通道触发 DMA,比如传输数据。具体的你需要根据自己的需求再做一些定制化的修改。

4:FISUART是一个异步通信,如果没有提供什么信息,只能一个接收。如果认识到效率不高,那也要加包头包尾长度信息告诉机器,进行设置对应的接触发起条件。

谢谢,

玲玲

 

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/673746

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

亲爱的灵灵,

  1. 可以有一个 比比较大的消息 RAM 区域,客户打算使用 Tx FIFO 模式 ,这个在架构中注册里有 介绍, 但没有例程,而且设备设计师里也没有相关的配置选项。
  2. 这个例子客户之后的前面已经经过测试 了,DMA 也用了。 客户主要问题是关于定时器计时器计时器如何接触后来 ADC 组一组 10 个通道进行转换一次,因为每一个通道的都有一个结果寄存器,ADC 组合完成后如何将多个目标地址地址通过 DMA 搬到 2 维数组中。

3 、客户来到,在 STM32 接收一个中断叫空闲中断中,可以通过空闲中断 进行接收的处理,通过 DMA 当前传输的地址和空闲中断通过计算机 共享完成接收。 可以接收不定长度的数据,但是 XMC7200 没找到相关的功能。

 

Alex.wang

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/674282

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

1: 你说的 10 条路通话道同时接触转换,根据我的理解 XMC7000D 没有这个功能。

2:你可以通过SAR AMUX触发第一路自动去切换做下面不同路的转换。每条路转换好了直接触发 DMA 传输,在你预期的次数以后会产生生中断的次数。

3:第三点你说的空白中断这种我看不清楚,但是你可以通过软件进行做,很多长的事件没有接收到数据,判断当前已经完成接收了。

4:在附件中我加载了 100 毫秒的 TriggerADC,ADC 配置了两路通道,每条路通道触发 DMA,你可以通过我的设置看看 ADC 的中断,判断 dma 没有触发器,也可以通过 10 个数据产生 INONIONIONEXMA 的中断进行观察,具体你需要处理这些数据,需要客户自己的去配置。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/675468

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

关于第一点,

  1. 可以有一个 比比较大的消息 RAM 区域,客户打算使用 Tx FIFO 模式 ,这个在架构中注册里有 介绍, 但没有例程,而且设备设计师里也没有相关的配置选项。

看看有没有解决办法,谢谢!

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/675564

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

亲爱的灵灵,

感谢支持!

1)。 ADC 我正在尝试使用这种方程式测试一下。可以存活的是,我们用的是比较多,80多路,这样的话会占用比较多的DMA通道。另一方面,我无法进行编译,设备配置器也无法打开,我用的是模块工具箱 3.1 2)。 WIDMA 的目的地就是在没有 CPU干预的情形下进行接收,只有在 DMA 接收到一定的数据长度或空闲时才会接触中断时,CPU数据进行处理,通过这种方法来降低 CPU 负载的负载,不会开启启口的中断信号,不可能接收一个节都去超时,这样的话不如直接开启中断了,连超时都不用判断断了。

 

Alex.Wang|18019037833

 

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/676164

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

1:你把我给了你打包的工程放到你建的工作空间外面,通过新建的方法进来了。

2:我们可能有很多通话道的,在资源方方面面我觉得是可以的。你可以通过 rocycle 的方程进行配置,不要过具体的内容,你可以自己再试一下,怎么写得好。

3:即使你用了 DMA,你也要设置一个具体的数据进行处理,比如 50 次,10 次处理一次,然后如果多长事件没有你,那就是 DMA 目的地地址里面的数据读取器出来就可以了。ADC 转换好了会传给DMA,DMA 累计到一定的数目会生成中断。即使不生成中间,这些数据也都是在目的地地址里面。

 

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/676220

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

亲爱的玲玲,

导入进来后,很多路找不到,design.modus 也打不开,这个版本是比较老吧,显示的是 3.0 的,否则 能转成 3.1 的,

 

Alex.wang

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/676318

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你私信一个你要通话方程式给我,我告诉你怎么做。我就是在 MTB3.1 的版本上面开发的。你不必放到工作空间的文件里面,用导入现有的应用程序那一个操作就可以了。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/676374

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

你把我附件的测试压缩文件解压缩,你重新建一个文件夹,把这个vtgen_trigger_adc文件解压到新的文件夹,MTB工具箱打开,工作空间的路放到你新建的文件下面,等到MTB开以后,z再下角点击就地导入现有应用程序。

LinglingG_46_0-1705375851319.png

 

按照我上面的方法可以导航,然后你打开设备配置界面,看看 ADC 片段和 DMA 部分,看看 ADC 片段和 DMA 部分,如果有什么问题可以看过去,我们再继续讨论。

谢谢,

玲玲

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/677118

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

亲爱的灵灵,

DEMO_5QR0680AG_42W1测试是可以的目前存在一个问题,我在例程上更改为PWM触发采样也可以正常运行,例程里用的是adc0,单独触发ADC0正常,但是我增加并更改为触发ADC2就无法正常触发采集,如果同时触发ADC0ADC2,则两个ADC触发采样都是正常的。附件为触发ADC2的工程,通过寄存器查看是无法正常触发的,请帮助查看原因! 

谢谢!

Alex.wang|18019037833

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/680479

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

亲爱的灵灵,

非常感谢,我的号码是 18019037833

谢谢!

Alex.wang

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/XMC7000D/m-p/676426

0 点赞