找回密码
 立即注册
楼主: 遥指杏花村

关于8G1K08的PCA时钟源为T0溢出脉冲

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-18 10:16:07 | 显示全部楼层
aer*** 发表于 2025-6-18 09:32
你好,我使用STC8G08A 8pin测试PCA T0这个触发源, 它是基本可以工作的,但是有一个很奇怪问题,这个PCA频 ...

啊,根据公式是对的,7位的PCA的频率  = 输入频率/128,  即100000 /128 = 781 ,

点评

你的设置:T0L = (0xffff-20)&0xff, T0H= ((0xffff-20)>>8 ) & 0xff。 这个设置其实是 24M/2/21,不是/20。 你的PWM频率应该是 24000000/12/21/128=744Hz。 要得到100KHz的时钟,应该是: TL0 = (u8)(65536UL-20);  详情 回复 发表于 2025-6-18 10:41
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12932
发表于 2025-6-18 10:41:10 | 显示全部楼层
aer*** 发表于 2025-6-18 10:16
啊,根据公式是对的,7位的PCA的频率  = 输入频率/128,  即100000 /128 = 781 ,

你的设置:T0L = (0xffff-20)&0xff, T0H= ((0xffff-20)>>8 ) & 0xff。
这个设置其实是 24M/2/21,不是/20。
你的PWM频率应该是 24000000/12/21/128=744Hz。

要得到100KHz的时钟,应该是:
TL0 = (u8)(65536UL-20);
TH0 = (u8)((65536UL-20) >>8);
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-18 18:56:46 | 显示全部楼层
梁*** 发表于 2025-6-18 10:41
你的设置:T0L = (0xffff-20)&0xff, T0H= ((0xffff-20)>>8 ) & 0xff。
这个设置其实是 24M/2/21,不是/20 ...

对,我错了,谢谢指正!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-20 15:01:27 | 显示全部楼层
梁*** 发表于 2025-6-18 10:41
你的设置:T0L = (0xffff-20)&0xff, T0H= ((0xffff-20)>>8 ) & 0xff。
这个设置其实是 24M/2/21,不是/20 ...

对了,请教一下,在7位pwm输出这里, 文档说:
PCA_PWMn 寄存器中的EBSn[1:0]设置为01时,PCA模块n工作于7位PWM 模式,此时将10,CL[6:01}与捕获寄存器{EPCnL,CCAPnL[6:0]}进行比较。当PCA 模块工作于7位PWM 模式时,由于所有模块共用一个PCA计数器,所有它们的输出频率相同。各个模块的输出占空比使用寄存器{EPCnL,CCAPnL[6:0]}进行设置。当{0,CL[6:0]}的值小于{EPCnL,CCAPnL[6:0]}时,输出为低电平;当{0,CL[6:0]}的值等于或大于{EPCnL,CCAPnL[6:0]}时,输出为高电平。当CL[6:0]的值由 7F变为00溢出时,{EPCnH,CCAPnH[6:0]}的内容重新装载到{EPCnL,CCAPnL[6:0]}中。这样就可实现无干扰地更新 PWM。

     我这里有点晕,不明白, {EPCnL,CCAPnL[6:0]} 这个 不是一共8位了,而不是7位, 我现在是设置是  EPCnH 是0 , CCAPnH 是设置了7位,目前工作的是正常的。
  我理解为 即是:
{EPCnL,CCAPnL[6:0]} ==  {0,CCAPnL[6:0]},

因为EPCnH为0.

    但是我有点不解的是,
如果我设置 EPCnH 为1, 那么,
EPCnL 也会给重载成1, 即 :
    {EPCnL,CCAPnL[6:0]} ==  {1,CCAPnL[6:0]}
那么,
    {0,CL[6:0]} 和 {EPCnL,CCAPnL[6:0]} 比较, 等效于 {0,CL[6:0]} 和 {1,CCAPnL[6:0]},


那么,无论CCAPnH 设置任何值,
       {0,CL[6:0]} 不是永远比 {1,CCAPnL[6:0]} 小? !!!!


即是,如果  EPCnH 为1 , 那么这个pwm 输出 ,无论你如何调 CCAPnH , 这个输出永远低电平? !!!

感觉不对劲, 我是有什么地方理解错了吧?  请指教一下!!谢谢!


关于 EPCnH和EPCnL,文档是这样说的:
EPCnH:PWM 模式下,重载值的最高位(8位PWM 的第9位,7位PWM 的第8位,6位PWM 的第7
位,10位PWM 的第11位)
EPCnL:PWM模式下,比较值的最高位(8位PWM的第9位,7位PWM的第8位,6位PWM的第7
位,10位PWM的第11位)


17.3.4.5
如何控制PWM 固定输出高电平/低电平
当PCA_PWMn &=OxCO,CCAPnH=0x00时,PWM固定输出高电平当 PCA_PWMn|= Ox3F,CCAPnH= OxFF 时,PWM固定输出低电

点评

有什么问题吗?  详情 回复 发表于 2025-6-20 15:11
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12932
发表于 2025-6-20 15:11:11 | 显示全部楼层
aer*** 发表于 2025-6-20 15:01
对了,请教一下,在7位pwm输出这里, 文档说:  PCA_PWMn 寄存器中的EBSn[1:0]设置为01时,PCA模块n工 ...

有什么问题吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-20 15:13:03 | 显示全部楼层
梁*** 发表于 2025-6-20 15:11
有什么问题吗?

你好,我刚刚小心发出了,重新编辑了一下: 在7位pwm输出这里, 文档说:
PCA_PWMn 寄存器中的EBSn[1:0]设置为01时,PCA模块n工作于7位PWM 模式,此时将10,CL[6:01}与捕获寄存器{EPCnL,CCAPnL[6:0]}进行比较。当PCA 模块工作于7位PWM 模式时,由于所有模块共用一个PCA计数器,所有它们的输出频率相同。各个模块的输出占空比使用寄存器{EPCnL,CCAPnL[6:0]}进行设置。当{0,CL[6:0]}的值小于{EPCnL,CCAPnL[6:0]}时,输出为低电平;当{0,CL[6:0]}的值等于或大于{EPCnL,CCAPnL[6:0]}时,输出为高电平。当CL[6:0]的值由 7F变为00溢出时,{EPCnH,CCAPnH[6:0]}的内容重新装载到{EPCnL,CCAPnL[6:0]}中。这样就可实现无干扰地更新 PWM。

     我这里有点晕,不明白, {EPCnL,CCAPnL[6:0]} 这个 不是一共8位了,而不是7位, 我现在是设置是  EPCnH 是0 , CCAPnH 是设置了7位,目前工作的是正常的。
  我理解为 即是:
{EPCnL,CCAPnL[6:0]} ==  {0,CCAPnL[6:0]},

因为EPCnH为0.

    但是我有点不解的是,
如果我设置 EPCnH 为1, 那么,
EPCnL 也会给重载成1, 即 :
    {EPCnL,CCAPnL[6:0]} ==  {1,CCAPnL[6:0]},
那么,
    {0,CL[6:0]} 和 {EPCnL,CCAPnL[6:0]} 比较, 等效于 {0,CL[6:0]} 和 {1,CCAPnL[6:0]},


那么,无论CCAPnH 设置任何值,
       {0,CL[6:0]} 不是永远比 {1,CCAPnL[6:0]} 小? !!!!


即是,如果  EPCnH 为1 , 那么这个pwm 输出 ,无论你如何调 CCAPnH , 这个输出永远低电平? !!!

感觉不对劲, 我是有什么地方理解错了吧?  请指教一下!!谢谢!

点评

手册有说明的: [attachimg]105296[/attachimg]  详情 回复 发表于 2025-6-21 00:07
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-20 15:34:16 | 显示全部楼层
问题这个问题之前,我是想生成一对这样的波形,
PCA0:  -------|___|-------|___|--
PCA1:  ___|-------|___|-------|__

上面是示意的两个周期,假设 周期时长为 10,   pca0的EPC0H 设置为6,那么小<6是pc0输出高电平, >=6时输出低电平,

因为所有的PCA都是共用CL的,所以PCA1的周期时长也是10,   我计划是pca1在小于<4时输出低电平,大于等于4输出高电平。   
我以为EPCnH可以解决问题,但是看了一下文档,好像我没有理解,现在是非常不确认可以怎么做。 在stm32可以使用极性来设置。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12932
发表于 2025-6-21 00:07:26 | 显示全部楼层
aer*** 发表于 2025-6-20 15:13
你好,我刚刚小心发出了,重新编辑了一下: 在7位pwm输出这里, 文档说:
PCA_PWMn 寄存器中的EBSn[1:0 ...

手册有说明的:

截图202506210007221253.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-21 23:22:27 | 显示全部楼层
梁*** 发表于 2025-6-21 00:07
手册有说明的:

嗯,我正是看了这个文档,所以我很困惑。我得出的结论是:
如果  EPCnH 为1 , 那么这个pwm 输出 ,无论你如何调 CCAPnH , 这个PCAn输出永远低电平?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-27 09:09:32
已绑定手机

1

主题

25

回帖

85

积分

注册会员

积分
85
发表于 2025-6-21 23:55:04 | 显示全部楼层
梁*** 发表于 2025-6-21 00:07
手册有说明的:

确实是EPCnH 为1, 无论如何都是输出零电平
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-29 03:59 , Processed in 1.275237 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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