打印
[技术问答]

MO58SSAN PWM 频率改变

[复制链接]
1463|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 | 只看该作者
楼主这两天倒腾对了吗,是时钟的问题吗

使用特权

评论回复
5
ideafor| | 2016-5-18 22:10 | 只看该作者
每一个GPIO都可以作为PWM的输出口吗?

使用特权

评论回复
6
z_horse|  楼主 | 2016-5-22 21:30 | 只看该作者
heisexingqisi 发表于 2016-5-16 19:00
楼主这两天倒腾对了吗,是时钟的问题吗

已经弄好了 我把分频数设置大了  就用的12M的时钟源 谢谢啦

使用特权

评论回复
7
z_horse|  楼主 | 2016-5-22 21:31 | 只看该作者
ideafor 发表于 2016-5-18 22:10
每一个GPIO都可以作为PWM的输出口吗?

有固定的pwm输出口两组

使用特权

评论回复
8
z_horse|  楼主 | 2016-5-22 21:31 | 只看该作者
ideafor 发表于 2016-5-18 22:10
每一个GPIO都可以作为PWM的输出口吗?

有固定的pwm输出口两组

使用特权

评论回复
9
598330983| | 2016-5-23 19:50 | 只看该作者
分频数没有配置好,就没有足够的时钟频率传递给PWM模块,因此可能就会没法达到你想要的那个要求。

使用特权

评论回复
10
IversonCar| | 2016-5-25 17:35 | 只看该作者
频率没法改变只能改变占空比吧

使用特权

评论回复
11
heisexingqisi| | 2016-5-26 07:15 | 只看该作者
分频导致了PWM模块不能使用到更高的时钟源。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝