嵌入式开发者社区

标题: DSP切换主频后,导致USB访问读卡器失败,该怎么处理? [打印本页]

作者: lushidegreen    时间: 2016-11-3 14:55
标题: DSP切换主频后,导致USB访问读卡器失败,该怎么处理?
我现在开发的产品要求控制功耗,因此在操作过程中,会根据不同情况设置不同的CPU主频。
在程序中的操作是,改变PLL0的配置参数。

现在遇到的问题是:切换CPU主频后,会导致USB访问读卡器失败,也不是每次都失败。
请问该如何解决?
每次切换主频,都先调用 USBHMSCDriveClose( )关闭USB设备,然后重新连接吗?

作者: human    时间: 2016-11-4 20:03
您有试过用不同的读卡器测试吗?
作者: lushidegreen    时间: 2016-11-5 09:14
本帖最后由 lushidegreen 于 2016-11-7 14:39 编辑
human 发表于 2016-11-4 20:03
您有试过用不同的读卡器测试吗?

没有,我们产品PCB上用的是AU6435,是一个读卡器芯片。
作者: 希望缄默    时间: 2016-11-8 13:50
[attach]1551[/attach]
USB 子系统模块的时钟需要由主时钟二分频提供的 更改主频后必须 重新初始化 USB 子系统
作者: lushidegreen    时间: 2016-11-8 15:15
嗯,这部分我是理解的,USB2.0的内部总线是由PLL0_SYSCLK2驱动的。而外部的USB2.0 PHY是由PLL0_AUXCLK驱动的,这个时钟起始就直接来自外部晶振,我们硬件上是24M。

如前面所述,也不是每次切换CPU主频后,都会导致USB访问读卡器失败。但是在无法确定什么时候会失败的情况下,只能关闭USB再重新连接了。

作者: 希望缄默    时间: 2016-11-9 09:09
lushidegreen 发表于 2016-11-8 15:15
嗯,这部分我是理解的,USB2.0的内部总线是由PLL0_SYSCLK2驱动的。而外部的USB2.0 PHY是由PLL0_AUXCLK驱动 ...

如果不能准确确定发生问题的具体情况 恐怕很难解决 你具体是怎么调频的?
作者: lushidegreen    时间: 2016-11-9 09:42
我是直接把GEL文件的函数写入C文件,然后调用device_PLL0( )函数,修改PLL0的倍频和后分频系数。
作者: 希望缄默    时间: 2016-11-9 13:45
lushidegreen 发表于 2016-11-9 09:42
我是直接把GEL文件的函数写入C文件,然后调用device_PLL0( )函数,修改PLL0的倍频和后分频系数。 ...

跑 SYS/BIOS 可以试试 ti.sysbios.family.c674.power 组件来调频
作者: 电子微创意    时间: 2016-11-9 23:16
不知道楼主的工程编译有没有优化,device_PLL()中的延时变量在不同的优化等级情况下结果是不同的,会不会是因为优化选项作祟
作者: lushidegreen    时间: 2016-11-10 15:33
本帖最后由 lushidegreen 于 2016-11-10 15:35 编辑

@希望缄默
“跑 SYS/BIOS 可以试试 ti.sysbios.family.c674.power 组件来调频”
(先反映个问题,论坛里点“回复”怎么无效呢?)

回正题,我是跑SYS/BIOS。power组件没用过,不知道怎么用。
我在C文件中添加了#include <ti/sysbios/family/c674/power.h>,打开power.h文件,没看到有函数接口。

恕我水平有限,还望“希望缄默”给予指点,也能让大家多学几招。
就比如,我要切换PLL0的频率,用power组件该怎么实现呢?能否给出代码示例?
再如,要使能或者禁止某个外设模块,又该怎么实现?
作者: lushidegreen    时间: 2016-11-10 15:38
@电子微创意
我没有配置优化项,使用默认,空白的。
根据你的提示,我注意到了,device_PLL()里面的延时是简单地用for语句实现的,我也不确定这个对PLL0配置有没有影响。
作者: 希望缄默    时间: 2016-11-10 16:03
lushidegreen 发表于 2016-11-10 15:33
@希望缄默
“跑 SYS/BIOS 可以试试 ti.sysbios.family.c674.power 组件来调频”
(先反映个问题,论坛里点“ ...

可能是装的某个插件与 chrome 内核浏览器不兼容 用 IE 是可以的
实例同事还在搞
作者: 电子微创意    时间: 2016-11-10 20:06
lushidegreen 发表于 2016-11-10 15:38
@电子微创意
我没有配置优化项,使用默认,空白的。
根据你的提示,我注意到了,device_PLL()里面的延时是 ...

持续关注中




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4