找回密码
 立即注册
查看: 655|回复: 3

哪里有AI8051U的PWM同步触发ADC采样的例程

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-06-29 16:00:02

14

主题

98

回帖

636

积分

高级会员

积分
636
发表于 2024-10-10 12:51:45 | 显示全部楼层 |阅读模式
AI8051U的芯片,PWM可以通过DMA去完成,如何做到PWM触发ADC采样?想做三相逆变电源,需要三个采样电流,三路采集电压,其中电流需要用PWM触发功能去采集,想做成60K的载波频率,三相50HZ输出,不知道此芯片能不能满足。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:482
  • 最近打卡:2025-06-30 09:00:25
已绑定手机

81

主题

5229

回帖

9357

积分

超级版主

DebugLab

积分
9357
发表于 2024-10-10 13:00:36 | 显示全部楼层
#include “Ai8051U.H” //头文件见下载软件
#include "intrins.h"
void delay()
{
    int i;
    for (i=0; i<100; i++);
}
void main()
{
    P_SW2 = 0X80; //使能访问 XFR,没有冲突不用关闭
    CKCON = 0x00; //设置外部数据总线速度为最快
    WTST = 0x00; //设置程序代码等待参数,
                          //赋值为 0 可将 CPU 执行程序的速度设置为最快
    P1M0 = 0x00;
    P1M1 = 0x01;
    P3M0 = 0x00;
    P3M1 = 0x00;
    ADC_CONTR = 0; //选择 P1.0 为 ADC 输入通道
    ADC_POWER = 1;
    ADC_EPWMT = 1;
    delay(); //等待 ADC 电源稳定
    EADC = 1;
    PWMA_CR2 = 0x20; //周期更新事件为 TRGO,用于周期触发 ADC
    PWMA_ARRH = 0x13;
    PWMA_ARRL = 0x38;
    PWMA_IER = 0x01;
    PWMA_CR1 = 0x01; //设置 CEN 启动 PWMA 定时器
    EA = 1;
    while (1);
}
void ADC_ISR() interrupt 5
{
    ADC_ FLAG = 0;
}
void PWMA_ISR() interrupt 26
{
    if(PWMA_SR1 & 0x01)
    {
        PWMA_SR1 &=~0x01;
    }
}


DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-06-29 16:00:02

14

主题

98

回帖

636

积分

高级会员

积分
636
发表于 2024-10-10 14:50:39 | 显示全部楼层
Debu*** 发表于 2024-10-10 13:00
#include “Ai8051U.H” //头文件见下载软件
#include "intrins.h"
void delay()

先学习一下,谢谢!。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:129
  • 最近打卡:2025-06-04 21:07:43
已绑定手机

0

主题

36

回帖

610

积分

高级会员

积分
610
发表于 2025-1-1 18:03:27 | 显示全部楼层
学习一下!
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-30 22:43 , Processed in 0.132653 second(s), 68 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表