yao眼的光 发表于 2022-11-21 14:34:34

STC单片机怎生成38K PWM

我要用STC单片机做个遥控器,试来试去PCA生成的PWM只能到37K或39K,怎么生成38K PWM

32G12K128 发表于 2022-11-21 14:40:18

PCA的分辨率是固定的,就不好调,只能通过调整PCA输入时钟周期,修改系统时钟,或者使用定时器作为PCA的输入时钟。
如果用8H的高级PWM,或者8G/8A系列的15位增强型PWM,调节频率的精度就会更高些。

神农鼎 发表于 2022-11-21 16:21:28

STC8A8K64D4, 内部时钟可以到45MHz, PCA 工作在10位模式,38K = 38000; 38000 * 1024 = 38912000 = 38.912MHz, 用内部时钟 工作在38.912MHz, 烧录时,在 时钟频率框中手工输入 38.912

神农鼎 发表于 2022-11-21 16:22:42

STC8A8K64D4/STC8G系列的 PCA/PWM可以设置 是10位/8/7/6位的分辨率

梁工 发表于 2022-11-21 19:33:13

红外遥控38KHz载波建议使用1/3占空比的。
通用遥控器使用的晶振时455KHz,载波为455/12=37.917KHz。接收端是有一定带宽的,发射端一般36~40KHz都没有明显的缩短距离。
MCU的8位PWM要产生38KHz的PWM,则主频=38*256=9728KHz=9.728MHz,可以有几种方法实现:
1、调整MCU频率,下载时输入9.728MHz。使用10MHz的时是39KHz,其实基本不影响接收距离的。
2、使用高级PWM或增强型PWM,设置合适的周期,比如11.0592MHz时,周期为291个时钟,则PWM频率=11059200/291=38004MHz。
3、如果MCU只做遥控器,除了读键和发射,没别的事可做,则可以使用软件延时的方产生,可以适应6~48MHz的频率。

梁工 发表于 2022-11-21 19:37:30

本帖最后由 梁工 于 2023-11-14 11:18 编辑

神农鼎 发表于 2022-11-21 16:21
STC8A8K64D4, 内部时钟可以到45MHz, PCA 工作在10位模式,38K = 38000; 38000 * 1024 = 38912000 = 38.912M ...
STC8A8K64D4的话,直接使用增强型15位PWM,设置合适的周期,比如11.0592MHz,则PWM周期=11059200/38000=291。

神农鼎 发表于 2022-11-22 14:05:50

STC8A8K64D4 是 传统的 CCP/PCA/PWM, 再 增加了 15位的增强型 PWM, STC8H/STC32G的 是 16位高级 PWM

一轮明月 发表于 2022-11-24 10:48:03

本帖最后由 一轮明月 于 2022-11-24 10:49 编辑

可以用我们的STC8H系列和STC8G系列,如下参考图:

一轮明月 发表于 2022-11-24 10:55:18

STC8H系列数据手册:https://www.stcai.com/filedownload/631007
STC8G系列数据手册:https://www.stcai.com/filedownload/631009
页: [1]
查看完整版本: STC单片机怎生成38K PWM