历史上的今天
今天是:2025年03月17日(星期一)
2020年03月17日 | 解决STM8S103K3T6打开BEEP功能遇到的无法操作BEEP_CSR的问题
2020-03-17 来源:eefocus
最近项目用到了STM8S103K3T6的beep功能,调试时遇到了无法更改寄存器BEEP_CSR的值的问题,造成无法开启beep功能;网上一搜全是提到OPTION BYTE的设置问题,不管用IAR或者stvp烧写前设置,还是在程序中操作FLASH通过软件方式改变OPTION BYTE,都没有作用,自己翻看最新版的手册,里面讲的也是前后冲突,英文版的也是
言归正传,项目中就是在PD4脚接的无源蜂鸣器,没什么问题;手册中也可能为了兼容多个型号说的不够详细,前后冲突

在手册DocID15441 Rev 13的第4.9章说要设置op(option data简写)的ARF7位,打开复用

但是在第8.1章又说AFR7是保留位,无作用,在第八章中也没找到关于beep的设置位

在RM0016 rev14的beep介绍也很简单,只有一个寄存器,时钟树上提到了CKAWUSEL OPTION bit,实际测试打开也没作用

这里提到如果开启beep功能硬件会自动使能LSI,所以OP应该不用管,而且设置流程中也没提到设置OP的要求

实际调试中遇到的问题是,不管用库函数还是直接操作寄存器都不能更改BEEP_CSR的值,始终是0x1F;这样相当于没有配置beep功能,肯定不会响的,后来在仿真过程中看到,LSI始终是禁用的状态,设置了OP还是没有启用,后面仔细查找,看到程序中在初始化CLK的时候,为了降低功耗把未用的外围时钟关掉了,其中有AWU的,和LSI有关系,屏蔽掉就可以操作BEEP_CSR寄存器了

问题是解决了,但是不明白为什么AWU会影响BEEP,从主时钟树上也没看出来,也没有beep的时钟走向描述

两个AWU的时钟,其中一路来自Fmaster,按说初始化程序中关的是这一路,不应该影响啊

不明白
正确设置开启BEEP并使用LSI的条件是:
1)OPTION字节设置保持默认,即CKAWUSEL为0,选择LSI
2)程序里面CLK_PCKENR2寄存器的PCKEN22设为1,即保持与Fmaster的连接
后续测试发现如果要使用HSE驱动BEEP,第1条OPTION里的CKAWUSEL要置1,且第2条也要同时置1
史海拾趣
|
我们的大脑无时无刻不在产生脑电波。早在1857年,英国的一位青年生理科学工作者卡通(R.Caton)在兔脑和猴脑上记录到了脑电活动,并发表了“脑灰质电现象的研究”论文,但当时并没有引起重视。十五年后,贝克(A.Beck)再一次发表脑电波的论文,才 ...… 查看全部问答> |
|
1.用STM32的芯片做主机,PIC16F677作为从机作数据采集。主机用模拟方式实现IIC通信,速率是400K,从机是通过配置相关的IIC寄存器实现。 2.上电后用示波器观察,主机有发送配置地址0XF0和10连续的共10个位的数据。 3.发送的地址和677的SSPADD配置地 ...… 查看全部问答> |
|
工作地点:北京 (面试地:北京) 招聘岗位:软件工程师、高级软件工程师 职责描述 1)负责通信产品软件模块设计、开发工作,完成相关的设计文档、代码编写。 2)参与软件模块的部分测试工作,完成测试用例的设计、执行与测试报告的输出。 3) ...… 查看全部问答> |
|
ADI的AD7606的可扩展多通道同步采样数据采集系统布局考虑的很全面,ADI的芯片在电能行业使用的量很大,能为电力网络提供稳定、可靠的高性能信号处理技术,通过高精度转换器和放大器实现电流和电压的精密测量,全世界一半的电网设备采用ADI公司的转 ...… 查看全部问答> |




