[技术问答] MO58SSAN PWM 频率改变

[复制链接]
1717|11
 楼主| z_horse 发表于 2016-5-12 13:05 | 显示全部楼层 |阅读模式
AN, PWM, ui, rc, se
想用M058SSAN 产生100khz左右的pwm   但是例程里的函数 始终改不上去
uint32_t PWM_ConfigOutputChannel(PWM_T *pwm,
                                 uint32_t u32ChannelNum,
                                 uint32_t u32Frequency,
                                 uint32_t u32DutyCycle)
{
    uint32_t u32Src;
    uint32_t u32PWMClockSrc;
    uint32_t u32PWMClkTbl[4] = {__HXT, __LIRC, 0, __HIRC};
    uint32_t i;
    uint8_t  u8Divider =16, u8Prescale = 0xFF;
    /* this table is mapping divider value to register configuration */
    uint32_t u32PWMDividerToRegTbl[17] = {NULL, 4, 0, NULL, 1, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 3};
    uint16_t u16CNR = 0xFFFF;

    u32Src = (CLK->CLKSEL1 & (CLK_CLKSEL1_PWM01_S_Msk << (u32ChannelNum & 2))) >> (CLK_CLKSEL1_PWM01_S_Pos + (u32ChannelNum & 2));

heisexingqisi 发表于 2016-5-12 22:55 | 显示全部楼层
应该是时钟选择的不对,所以没法生成想要的PWM。
 楼主| z_horse 发表于 2016-5-15 11:23 | 显示全部楼层
heisexingqisi 发表于 2016-5-12 22:55
应该是时钟选择的不对,所以没法生成想要的PWM。

我去试试
heisexingqisi 发表于 2016-5-16 19:00 | 显示全部楼层
楼主这两天倒腾对了吗,是时钟的问题吗
ideafor 发表于 2016-5-18 22:10 | 显示全部楼层
每一个GPIO都可以作为PWM的输出口吗?
 楼主| z_horse 发表于 2016-5-22 21:30 | 显示全部楼层
heisexingqisi 发表于 2016-5-16 19:00
楼主这两天倒腾对了吗,是时钟的问题吗

已经弄好了 我把分频数设置大了  就用的12M的时钟源 谢谢啦
 楼主| z_horse 发表于 2016-5-22 21:31 | 显示全部楼层
ideafor 发表于 2016-5-18 22:10
每一个GPIO都可以作为PWM的输出口吗?

有固定的pwm输出口两组
 楼主| z_horse 发表于 2016-5-22 21:31 | 显示全部楼层
ideafor 发表于 2016-5-18 22:10
每一个GPIO都可以作为PWM的输出口吗?

有固定的pwm输出口两组
598330983 发表于 2016-5-23 19:50 | 显示全部楼层
分频数没有配置好,就没有足够的时钟频率传递给PWM模块,因此可能就会没法达到你想要的那个要求。
IversonCar 发表于 2016-5-25 17:35 | 显示全部楼层
频率没法改变只能改变占空比吧
heisexingqisi 发表于 2016-5-26 07:15 | 显示全部楼层
分频导致了PWM模块不能使用到更高的时钟源。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部