打印
[应用相关]

无晶振 USB 功能代码

[复制链接]
1143|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhjerry|  楼主 | 2020-7-26 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AT32有一个非常好的无晶振USB功能。有没有一个应用笔记提供一段代码可以在原STM32的应用上面直接加载开启?

使用特权

评论回复
沙发
muyichuan2012| | 2020-7-27 09:49 | 只看该作者
请问您讲的是 USB使用HSI 时钟,并且使用ACC功能吗?

使用特权

评论回复
板凳
zhjerry|  楼主 | 2020-7-27 13:46 | 只看该作者
是的。 我看到403A的库里面有相关的例程但是这个基于你们自己的库,我要把整个原来基于STM32库的工程转移过来工作量很大。我希望有一个类似于PATCH 的独立的代码来开启RCC中HSI48的使用和校准(中断处理), 可以方便的加到现有工程。

使用特权

评论回复
地板
084425| | 2020-7-27 23:01 | 只看该作者
直接参考例程就可以了,一共就两个函数,初始化时选用HSI作为USB时钟,另外一个函数主程序中开启ACC

使用特权

评论回复
5
tanmingjin| | 2020-7-28 10:50 | 只看该作者
zhjerry 发表于 2020-7-27 13:46
是的。 我看到403A的库里面有相关的例程但是这个基于你们自己的库,我要把整个原来基于STM32库的工程转移过 ...

如果在ST的库上可以按照如下直接添加:
#define ACC_BASE    0x40015800
#define RCC_APB2Periph_ACC    ((uint32_t)0x00400000)
typedef struct
{
    __IO uint32_t STS;
    __IO uint32_t CTRL1;
    __IO uint32_t CTRL2;
    __IO uint32_t C1;
    __IO uint32_t C2;
    __IO uint32_t C3;
}ACC_Type;

#define ACC    ((ACC_Type *)ACC_BASE)

void Enable_ACC(void)
{
    RCC->APB2ENR |= RCC_APB2Periph_ACC;
    ACC->C1 = 8000 - 20;
    ACC->C2 = 8000;
    ACC->C3 = 8000 + 20;
    ACC->CTRL1 |= 0x0003;
       
    /*USB 选用HSI 48MHz时钟*/
    *((uint32_t *)(0x40021000 + 0x30)) |= 0x02000000;
    *((uint32_t *)(0x40021000 + 0x54)) |= 0x00000100;
}

使用特权

评论回复
6
zhjerry|  楼主 | 2020-7-28 12:17 | 只看该作者
tanmingjin 发表于 2020-7-28 10:50
如果在ST的库上可以按照如下直接添加:
#define ACC_BASE    0x40015800
#define RCC_APB2Periph_ACC     ...

太谢谢了,这个就是我想要的!
对照AT403A的代码把好几个文件里面的内容放到一起来了。这里没有开启中断反正那边中断里面也没有什么处理所以不要就是了。

使用特权

评论回复
7
zhjerry|  楼主 | 2020-7-28 14:30 | 只看该作者
zhjerry 发表于 2020-7-28 12:17
太谢谢了,这个就是我想要的!
对照AT403A的代码把好几个文件里面的内容放到一起来了。这里没有开启中断 ...

HSI48作USB的代码经验证可行。 下面验证HSI48作USB长期可靠性,结果请等待报告!

使用特权

评论回复
8
zhjerry|  楼主 | 2020-7-29 14:25 | 只看该作者
zhjerry 发表于 2020-7-28 14:30
HSI48作USB的代码经验证可行。 下面验证HSI48作USB长期可靠性,结果请等待报告! ...

连续通信测试跑了一天了,HSI48+ACC 作 USB 时钟没有出现问题,很可靠。

使用特权

评论回复
9
zhifeng| | 2020-8-2 18:06 | 只看该作者
无晶振usb 好

使用特权

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

本版积分规则

53

主题

232

帖子

4

粉丝