找回密码
 立即注册
查看: 114|回复: 8

想用Ai8U8K64U PWM驱动BTS7960模块

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-07-24 22:46:38

27

主题

86

回帖

837

积分

高级会员

积分
837
发表于 2025-7-21 08:30:55 | 显示全部楼层 |阅读模式
MOTOR.jpg PWMA 输出附加使能寄存器PWMx_IOAUX.png PWM输出任意周期占空比波形.png 输出使能寄存器PWMx_ENO.png PWMA PWB寄存器.png PWM列表1.png
刚刚做了一块PCB板
用P2.0  P2.2分别控制电机正反转

先按照官方程序测试效果
目前只实现IO口点亮
还是不知道怎么修改参数
达到工作要求
脉冲频率和占空比可变
参考查阅寄存器 和PWM工作原理
发现PWM控制牵涉的寄存器比较多
做文档研究两三天还不是很明白

主要需知道PWMA_CCR1和PWMA_ARR两个寄存器
怎么计算


/****PWM输出任意周期占空比波形*******/
              #include     "STC8H.h"             //
              #include     "intrins.h"           //
/*************关所有输出*******************************/            
              void Init_io()
              {
               P0M0=0X00;                        //   
               P0M1=0X00;                        //
               P1M0=0X00;                        //   
               P1M1=0X00;                        //
               P2M0=0X00;                        //
               P2M1=0X00;                        //
               P3M0=0X00;                        //   
               P3M1=0X00;                        //
               P5M0=0X00;                        //
               P5M1=0X00;                        //
              }
/******************** 主函数 **************************/
              void main(void)
              {   
              P_SW2|=0X80;
              EA=1;
              Init_io();
              PWMA_CCER1=0x00;                   //写 CCMRx 前必须先清零 CCxE    关闭通道
              PWMA_CCMR1=0x60;                   //设置 PWM1 模式1 输出
              PWMA_CCER1=0x01;                   //使能 CC1E 通道, 高电平有效
              PWMA_CCR1=1;                       //设置占空比时间
              PWMA_ARR=5000;                     //设置周期时间
              PWMA_ENO=0X01;                     //使能PWM1P输出
              PWMA_BKR=0X80;                     //使能主输出 MOEA MOEB
              PWMA_CR1=0X01;                     //开始计时
              while(1)
               {
               
               }                                 //
              }                                     //
              










PWMA 输出附加使能寄存器PWMx_IOAUX.png
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-07-24 22:46:38

27

主题

86

回帖

837

积分

高级会员

积分
837
发表于 2025-7-21 09:35:35 | 显示全部楼层
TCON.png

PDF找到TCON
T1CON暂时没有找到


点评

TCON同时控制定时器0、1,不存在T1CON  详情 回复 发表于 2025-7-21 14:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:479
  • 最近打卡:2025-07-31 08:56:35
已绑定手机

44

主题

2129

回帖

7413

积分

论坛元老

积分
7413
发表于 2025-7-21 10:03:20 | 显示全部楼层
这是PWM频率计算公式,根据公式可通过PWMx_PSCR与PWMx_ARR寄存器调整PWM输出频率:
截图202507211000503376.jpg

而占空比设置寄存器 PWMx_CCRn 正常取值范围在 0~PWMx_ARR 之间。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-07-31 08:58:47
已绑定手机

87

主题

5532

回帖

1万

积分

超级版主

DebugLab

积分
10123
发表于 2025-7-21 14:03:58 | 显示全部楼层
频率(PWM时钟使用SYSCLK):
截图202507211402073184.jpg
占空比:
= PWMx_CCRn / PWMx_ARR
DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-07-31 08:58:47
已绑定手机

87

主题

5532

回帖

1万

积分

超级版主

DebugLab

积分
10123
发表于 2025-7-21 14:07:47 | 显示全部楼层
天*** 发表于 2025-7-21 09:35
PDF找到TCON
T1CON暂时没有找到

TCON同时控制定时器0、1,不存在T1CON
截图202507211408228576.jpg

DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-07-24 22:46:38

27

主题

86

回帖

837

积分

高级会员

积分
837
发表于 2025-7-21 15:01:40 | 显示全部楼层

修改了一下引脚
输出到P2.0 P2.1
等一下再修改频率试试

/******************** 主函数 **************************/
              void main(void)
              {   
              P_SW2|=0X80;
              EA=1;
              Init_io();
              PWMA_PS=0x01;                      //P2.0 P2.1
              PWMA_CCER1=0x00;                   //写 CCMRx 前必须先清零 CCxE    关闭通道
              PWMA_CCMR1=0x60;                   //设置 PWM1 模式1 输出
              PWMA_CCER1=0x01;                   //使能 CC1E 通道, 高电平有效
              PWMA_CCR1=1;                       //设置占空比时间
              PWMA_ARR=5000;                     //设置周期时间
              PWMA_ENO=0X01;                     //使能PWM1P输出
              PWMA_BKR=0X80;                     //使能主输出 MOEA MOEB
              PWMA_CR1=0X01;                     //开始计时
              while(1)
               {
               
               }                                 //
              }                                     //

PWMA PWB寄存器.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-07-24 22:46:38

27

主题

86

回帖

837

积分

高级会员

积分
837
发表于 2025-7-21 15:42:41 | 显示全部楼层
  PWMA_PS=0x01指示灯闪烁

PWMA_PS=0x01;修改成PWMA_PS=0X04;                    
目测P2.2无反应
#include     "STC8H.h"             //
              #include     "intrins.h"           //
              #define      uchar unsigned char      //
              #define      uint  unsigned int       //
              sbit         OutPut0=P2^0;                   //
              sbit         OutPut1=P2^2;  
              uchar        SS;
/*-----------(1)延时子程序12MHz 加千百十个显示--------*/
              void Delay100ms(uint x)              //
              {
              uint i,j;
              for(i=0;i<x;i++)
              for(j=0;j<11000;j++);
              }
/*************关所有输出*******************************/            
              void Init_io()
              {
               P1M0=0X00;                        //   
               P1M1=0X00;                        //
               P2M0=0x05;
               P2M1=0x00;
               P3M0=0X00;                        //   
               P3M1=0X00;                        //
               P5M0=0X00;                        //
               P5M1=0X00;                        //
              }
/******************** 主函数 **************************/
              void main(void)
              {   
              P_SW2|=0X80;
              EA=1;
              Init_io();
              for(SS=0;SS<10;SS++)
              {
              OutPut0=0;
              OutPut1=0;
              Delay100ms(50);
              OutPut0=1;
              OutPut1=1;
              Delay100ms(50);
              }
        //      PWMA_PS=0x01;                      //P2.0 P2.1
              PWMA_PS=0X04;                      //P2.2 P2.3
              PWMA_CCER1=0x00;                   //写 CCMRx 前必须先清零 CCxE    关闭通道
              PWMA_CCMR1=0x60;                   //设置 PWM1 模式1 输出
              PWMA_CCER1=0x01;                   //使能 CC1E 通道, 高电平有效
              PWMA_CCR1=1;                       //设置占空比时间
              PWMA_ARR=5000;                     //设置周期时间
              PWMA_ENO=0X01;                     //使能PWM1P输出
              PWMA_BKR=0X80;                     //使能主输出 MOEA MOEB
              PWMA_CR1=0X01;                     //开始计时
              while(1)
               {
               
               }                                 //
              }                                     //
              

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-07-24 22:46:38

27

主题

86

回帖

837

积分

高级会员

积分
837
发表于 2025-7-21 15:48:32 | 显示全部楼层
先把PWMA_CCR1改一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-07-24 22:46:38

27

主题

86

回帖

837

积分

高级会员

积分
837
发表于 2025-7-21 17:50:41 | 显示全部楼层
void main(void)
              {   
              P_SW2|=0X80;
              EA=1;
              Init_io();


              for(SS=0;SS<5;SS++)
              {
              OutPut0=0;
              OutPut1=0;
              Delay100ms(50);
              OutPut0=1;
              OutPut1=1;
              Delay100ms(50);
              }
        //      PWMA_PS=0x01;                      //P2.0 P2.1
              PWMA_PS=0X01;                      //P2.2 P2.3
              PWMA_CCER1=0x00;                   //写 CCMRx 前必须先清零 CCxE    关闭通道
              PWMA_CCMR1=0x60;                   //设置 PWM1 模式1 输出
              PWMA_CCER1=0x01;                   //使能 CC1E 通道, 高电平有效
              PWMA_CCR1=100;                     //设置占空比时间
              PWMA_ARR=2000;                     //设置周期时间
              PWMA_ENO=0X01;                     //使能PWM1P输出
              PWMA_BKR=0X80;                     //使能主输出 MOEA MOEB
              PWMA_CR1=0X01;                     //开始计时
              while(1)
               {
               
               }                                 //
              }                                     //
              


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-7-31 20:23 , Processed in 0.149369 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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