打印

GD32F103RCT6跑96M时USB时钟怎么设置?

[复制链接]
3584|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cunxing|  楼主 | 2016-4-15 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cunxing 于 2016-4-15 10:48 编辑

从ST转过来用GD,用的ST的库,原程序不改用在GD上USB OK。 因GD能跑更快,于是改成跑96M(因要使用USB,外置晶振8M)。仅修改了如下代码(USB就不行了):
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_12);         //8 * 12 = 96M,之前是8*9=72M

RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div2);             //USB时钟为96/2= 48M, 之前是72/1.5

因为用的是ST的库,USB时钟分频使用的位没有那么多,于再修改库文件stm32f10x_rcc.c:

#define RCC_USBCLKSource_PLLCLK_1Div5   ((uint8_t)0x00)
#define RCC_USBCLKSource_PLLCLK_Div1    ((uint8_t)0x01)
#define RCC_USBCLKSource_PLLCLK_2Div5   ((uint8_t)0x10)     //GD 后增加
#define RCC_USBCLKSource_PLLCLK_Div2    ((uint8_t)0x11)     //GD 后增加

#define IS_RCC_USBCLK_SOURCE(SOURCE)   (((SOURCE) == RCC_USBCLKSource_PLLCLK_1Div5) || \
                                                                ((SOURCE) == RCC_USBCLKSource_PLLCLK_Div1)  || \
                                                                 ((SOURCE) == RCC_USBCLKSource_PLLCLK_2Div5) || \
                                                                  ((SOURCE) == RCC_USBCLKSource_PLLCLK_Div2))     //参数较验宏也同样修改。

修改后,USB就不行了。
各位大侠,这样修修改应该没有问题呀?难道不有漏掉的地方?还是GD,在USB方面还有其它需要设置的?
沙发
tomaschen123| | 2016-4-15 14:54 | 只看该作者
QQ,2863961473,技术交流

使用特权

评论回复
板凳
baimiaocun2015| | 2016-4-15 20:01 | 只看该作者
USB的时钟是经过分频处理后采用的,不能直接将该主频用于USB的

使用特权

评论回复
地板
tongbu2015| | 2016-4-15 22:03 | 只看该作者
这样看肯定是有漏掉的部分的,还有你的时钟源的设置部分的代码中,特别是USB外设的时钟源的enable部分检查下的,看有没有设置的

使用特权

评论回复
5
tongbu2015| | 2016-4-15 22:05 | 只看该作者
具体的代码部分就是像这样的RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_ADC1|
                               RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO|RCC_APB2Periph_TIM1, ENABLE);

使用特权

评论回复
6
smilingangel| | 2016-4-16 19:34 | 只看该作者
这个就直接参考该芯片资料中的时钟哦诶之部分及框图的

使用特权

评论回复
7
angerbird| | 2016-4-16 21:01 | 只看该作者
这个我看资料中石油转么的时钟总线给其提供频率的,只要能满足其要去就可以的。

使用特权

评论回复
8
firstblood| | 2016-4-16 21:48 | 只看该作者
应该是还有遗漏的地方,USB外设的跟其他外设还是有点区别的

使用特权

评论回复
9
comeon201208| | 2016-4-17 12:35 | 只看该作者
是不是还需要对这个USB的时钟进行时能选择的呢?

使用特权

评论回复
10
cunxing|  楼主 | 2016-4-17 21:41 | 只看该作者
应该是没有漏掉的地方, 因为我把主时钟改回72M,USB分频1.5为48M,USB设备都是正常的。仅是想跑快点,搞到96M,USB分频到2 就不行。使能时钟那些肯定都有的

使用特权

评论回复
11
liewslau| | 2016-5-27 11:56 | 只看该作者
供参考

使用特权

评论回复
12
liewslau| | 2016-5-27 12:01 | 只看该作者
/**
  * @brief  Enable usb clock
  * @param  None
  * @retval None
  */
void  USB_HWP_ClockConfig (void)
{
    /* Configure USB model clock from PLL clock */
    RCC_USBCLKConfig(RCC_USBCLK_PLL_DIV2);   //set the GD32F103 at 96MHZ

    /* Enable USB APB1 clock */
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_USB, ENABLE);   //48mhz
}


//#define SYSCLK_FREQ_HSE    HSE_VALUE
//#define SYSCLK_FREQ_24MHz  24000000
//#define SYSCLK_FREQ_36MHz  36000000
//#define SYSCLK_FREQ_48MHz  48000000
//#define SYSCLK_FREQ_56MHz  56000000
//#define SYSCLK_FREQ_72MHz  72000000
#define SYSCLK_FREQ_96MHz  96000000
//#define SYSCLK_FREQ_108MHz  108000000

修改这两个部分就可以了

使用特权

评论回复
13
liewslau| | 2016-5-27 12:02 | 只看该作者
还有D+上拉引脚也要和你的板子相同

使用特权

评论回复
14
182317716| | 2016-5-30 08:47 | 只看该作者
GD代理商QQ:182317716 更多样品,中文手册.开发工具支持!
---13686827076-王生

使用特权

评论回复
15
wb786030167| | 2016-5-31 09:30 | 只看该作者
朋友 你用GD这颗做啥产品的呢?我们有可以直接替换的料,不知有兴趣了解下么?

使用特权

评论回复
16
kai540693711| | 2017-7-10 09:04 | 只看该作者
麻烦问下楼主用的是哪个版本的USB库吗,我直接移植过来的时候好像不能识别

使用特权

评论回复
17
shenmu2012| | 2017-7-28 21:57 | 只看该作者
这个关于时钟设置的没啥问题的,可能是时钟不合适了

使用特权

评论回复
18
vivilzb1985| | 2017-7-30 21:25 | 只看该作者
这个作为参考资料还是非常不错的

使用特权

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

本版积分规则

62

主题

87

帖子

1

粉丝