<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[SDK应用_MD14_ETMR触发PTU延时触发ADC转换]]></title><description><![CDATA[<ol>
<li>前言</li>
</ol>
<ul>
<li>需求1：在eTMR硬件触发后需要延时一段时间后再进行ADC采样；</li>
<li>需求2：在一个etmr周期内需要多个硬件触发点且触发点需要自定义（不是mid或mod等位置）进行ADC采样；</li>
<li>需求3：在etmr硬件触发ADC采样后使用DMA进行ADC数据的传输；</li>
</ul>
<p dir="auto">基于以上需求，本demo 选用eTMR+PTU模块（可编程触发单元）+ADC+DMA的ADC采样方案，在eTMR模块计数开始时（即init trig）触发PTU工作，再通过PTU配置不同的通道进行不同的延迟时间触发ADC采样，最后使用DMA通道进行ADC采样数据的传输；<br />
PTU模块可以根据外部触发对ADC采样进行可编程的延时，PTU设置的延时时间结束后会自动触发ADC采样，PTU模块介绍如下图；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/b53bf3b9-855f-4772-b202-952eb38be546.png" alt="0490e946-24d6-4847-8317-38c7b35a30a1-image.png" class=" img-fluid img-markdown" /><br />
2. 基础工程配置<br />
型号：YTM32B1MD14<br />
配置工具版本：3.0.0<br />
SDK版本：1_4_0<br />
2.1 功能要求<br />
以PWM频率为16Khz为例，则PWM周期值为1/16k=62.5us，如下任选三个触发点进行ADC采样，共采集3个通道：<br />
在PWM计数开始后延时3.34us，采集1次ADC电压<br />
在PWM计数开始后延时16.67us，采集1次ADC电压<br />
在PWM计数开始后延时41.67us，采集1次ADC电压<br />
2.2 配置eTMR模块<br />
MD14的FAST_BUS_CLK默认是120Mhz，分频配置为2分频（具体分频值根据频率进行计算，注意不能超过最大计数），配置eTMR在初始值时生成触发信号；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/f82cf0f6-b030-468f-8094-a02f1d4f1346.png" alt="531c4841-1b59-497d-b063-83a3b550c0a2-image.png" class=" img-fluid img-markdown" /><br />
配置输出16Khz的PWM；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/34f5838b-b07b-4726-9d5d-78dcaa05b7ca.png" alt="7afedc1b-9217-4f39-a25f-e3e85a8c2a47-image.png" class=" img-fluid img-markdown" /><br />
2.3 配置TMU模块<br />
配置TMU通道，一个触发通道，两个监控通道（后两个通道无实际用途，测试使用，实际项目可不配置）；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/032e4cc0-9e66-4252-8203-2bd0d89bc687.png" alt="43dad203-36d9-49c8-8e48-5075ebc0de61-image.png" class=" img-fluid img-markdown" /><br />
2.4 配置PTU模块<br />
PTU时钟固定是FAST BUS CLOCK = 120M（详情参考IPC章节）；<br />
由于PWM的频率是16K,周期是62.5us，且PTU的MOD值（计数值大值）为16位=65535，所以PTU时钟可以与etmr保持一致，这样每个cnt计数的时间也是一致的：<br />
故PTU配置如下：<br />
Prescaler divider = 2<br />
Multiplication factor = 1<br />
频率为：PTU_TIM = 120MHz /(2<em>1) = 60MHz，1个cnt计数值为：1/MHz = 0.0167us；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/17baf4ab-d6a7-4780-bb9e-5a497ff7da85.png" alt="1281cbd5-d96f-42ce-afbb-42f39bc7ab3f-image.png" class=" img-fluid img-markdown" /><br />
2.5 配置ADC模块<br />
ADC配置分为两套：中断方式和DMA方式；<br />
中断方式：配置3个采样通道，一次触发采一个通道，PWM一个周期共3次触发刚好采样3个ADC通道各一次，使用中断方式进行ADC读值；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/28a1fc28-0b61-4d7d-a9a3-9f3478055afc.png" alt="19a7632e-1057-4a48-8243-2ec678f34e90-image.png" class=" img-fluid img-markdown" /><br />
DMA方式：配置3个采样通道，每次触发采集整个序列即配置的全部3个通道，使用DMA方式进行ADC读值；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/91d345a9-d757-4f59-83b0-df77af4bccc8.png" alt="59369e69-8fcf-4246-991b-ceaa0caadfe7-image.png" class=" img-fluid img-markdown" /><br />
3. 代码编写<br />
3.1 PTU通道属性配置<br />
3.1.1. 设计PTU总周期值<br />
PTU和etmr的时钟源都是Fast_bus,且配置的两者时钟分频值也一致，故两者单个cnt计数值相同；<br />
16Khz的PWM周期值为：1/16k = 62.5us<br />
PTU频率为：120MHz /(2</em>1) = 60MHz<br />
单个CNT计数值为：1/60MHz = 0.0167us<br />
PTU总计数周期：62.5us/0.0167us = 3750 count，PTU周期和计时精度与eTMR保持一致<br />
3.1.2. 计算PTU通道延迟<br />
延时3.34us（ch0）： 3.34us / 62.5us * 3750   = 200<br />
延时16.67us（ch1）：16.67us / 62.5us * 3750 = 1000<br />
延时41.67us（ch2）：41.67us / 62.5us * 3750 = 2500<br />
3.1.3. 配置PTU通道参数<br />
定义：PTU_PERIOD_COUNT = 3750<br />
定义：PTU_BASE_COUNT = 0，表示PWM的计数值起始值为0，与PWM的init计数值保持一致；<br />
定义：PTU_OFFSET_COUNT0 = 200，配置PTU_CH0从PTU接收eTMR的trigger到触发ADC采样的时间间隔<br />
定义：PTU_OFFSET_COUNT1 = 1000，配置PTU_CH1从PTU接收eTMR的trigger到触发ADC采样的时间间隔<br />
定义：PTU_OFFSET_COUNT2 = 2500，配置PTU_CH2从PTU接收eTMR的trigger到触发ADC采样的时间间隔<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/4683fc2a-ceca-4bec-bf99-8e45c3eb860b.png" alt="d31a236a-bbbe-4aaf-99b8-b98d1ce93bdc-image.png" class=" img-fluid img-markdown" /><br />
3.2 PTU通道使能<br />
使能PTU通道0-2，配置工具无此配置项，需在工程中手动配置;<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/2cd2c4ee-a6a9-4dfa-99da-55abeea1fa3f.png" alt="4c243ff2-ea4b-48c8-9b27-e709378df2d6-image.png" class=" img-fluid img-markdown" /><br />
3.3 PTU模块初始化<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/5a024833-db45-4aca-8015-74796d09cc71.png" alt="03f5af1b-04b6-411e-9e41-9bf98ad1f61f-image.png" class=" img-fluid img-markdown" /><br />
3.4 ADC两种方式配置介绍<br />
DMA方式：<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/8c851064-84b8-4e74-81a3-7855ccab41b4.png" alt="9dd33c20-276e-4b2f-b8b8-8617abbf3e92-image.png" class=" img-fluid img-markdown" /><br />
中断方式：<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/45c10482-0adf-4f66-b935-cd095444aec9.png" alt="3db7db5d-e1fc-4040-b1eb-655f0b4caf46-image.png" class=" img-fluid img-markdown" /><br />
4. 实验验证<br />
将代码下载进芯片，逻辑分析仪监测PWM（eTMR_CH0）、PTE10（TMU_OUT4）和PTE11（TMU_OUT5）；</p>
<ul>
<li>运行中断方式代码：<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/72c49ce8-3925-47a4-b158-fd6857d4ca8e.png" alt="e30224e7-f904-494e-a569-89acad594055-image.png" class=" img-fluid img-markdown" /><br />
中断正常进入，采样值也可通过watch正常观测；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/c31e5686-16d0-4a29-9bfe-82d0b6e2e5b4.png" alt="7c37007a-d87e-4f87-9c2e-7fb445b2ba7a-image.png" class=" img-fluid img-markdown" /><br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/1bbb1187-44f4-4324-abee-a435476a4cf5.png" alt="df6bc316-ce20-4c24-88e0-8346795ffe60-image.png" class=" img-fluid img-markdown" /><br />
通道2对应的是PWM的周期，16Khz；<br />
通道0对应的是eTMR初始化值的触发信号，每个周期开始时，即cnt=0时触发；<br />
通道1对应的是ADC通道转换完成信号，可以看到每个周期有三个完成信号，对应3个PTU延时通道配置；<br />
可以看到通道0到通道1第一和第三个信号之间的距离为4.17us和42.52us，与我们计算值的3.34us和41.67us都是0.85us的差值，属于正常测量误差，即我们的配置已经正常生效；</li>
<li>运行DMA方式代码：<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/f278c7f0-7510-4c08-b928-61fd1449a8f9.png" alt="68513c67-48af-4042-bd5e-a4ffcebed359-image.png" class=" img-fluid img-markdown" /><br />
代码正常运行，ADC采样结果持续刷新，不会进中断；<br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/3939d21a-7c9f-460f-8db6-dffdb86ca7a3.png" alt="c8ad5c13-702a-4942-a531-3f1e4f4e4fd4-image.png" class=" img-fluid img-markdown" /><br />
<img src="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/087a51c6-38b1-4ba8-9bcd-ff02eb3ef6bb.png" alt="004dd9fb-2d86-40f7-b303-6267f8b6a0db-image.png" class=" img-fluid img-markdown" /><br />
同ADC中断方式观测结果：etmr每个周期都能触发一次trig信号给到PTU，每个etmr周期PTU都会有三个不同位置的延时触发ADC采样，与预期配置一致；<br />
可以看到通道0到通道1第一和第二个信号之间的距离为4.19us和17.52us，与我们计算值的3.34us和16.67us都是0.85us左右的差值，属于正常测量误差，即我们的配置已经正常生效；</li>
</ul>
<p dir="auto">demo代码：<a href="https://yt-static-main.oss-cn-shanghai.aliyuncs.com/nodebb/29/d6389dc6-f96d-466a-9daa-8f6063298ec5.zip" rel="nofollow ugc">PWM_ADC_HW_PTU_DMA.zip</a></p>
]]></description><link>https://forum.ytmicro.com/topic/2012/sdk应用_md14_etmr触发ptu延时触发adc转换</link><generator>RSS for Node</generator><lastBuildDate>Mon, 08 Jun 2026 19:18:25 GMT</lastBuildDate><atom:link href="https://forum.ytmicro.com/topic/2012.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Jun 2026 02:20:56 GMT</pubDate><ttl>60</ttl></channel></rss>