你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 8839|回复: 12

STM8L151K4的DA输出无变化

[复制链接]

1

主题

12

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2012-1-13 18:02:58 | 显示全部楼层 |阅读模式
STM8L151K4 内部16M时钟,PB4做为DA输出, PB6做为初始化成功指示。
PB4如果用做普通IO控制LED闪烁也是OK的。作为DA就没输出。
研究了很久,就是不知道哪里错了,恳请高手指点。谢谢
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "stm8l15x.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x_i2c.h"
#include "stm8l15x_dac.h"
#include "stm8l15x_clk.h"
#include "stm8l15x_syscfg.h"

#define POWER_LED_ON (GPIO_SetBits(GPIOB,GPIO_Pin_6)) //设置电源指示灯
void GPIO_CONF(void)                                                 //IO口初始化
{
        GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_Out_PP_High_Fast);//PB6 LED ON
        //GPIO_Init(GPIOB,GPIO_Pin_4,GPIO_Mode_In_FL_IT);
}
void CLK_CONF(void)                                                 //系统频率初始化
{
        CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//系统时钟分频
        CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);//打开DAC时钟
}
void DAC_CONF(void)                                                //初始化DAC
{
        DAC_DeInit();//DAC初始化到默认值
        DAC_Init(        DAC_Channel_1, //DAC通道1
                                                DAC_Trigger_Software, //DAC 触发
                                                DAC_OutputBuffer_Disable);//DAC输出缓冲
        DAC_WaveGenerationCmd(DAC_Channel_1,DAC_Wave_Triangle,DISABLE);//不使用三角波
        IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(DAC_LFSRUnmask_Bits11_0);        //DAC位数
        DAC_DMACmd(DAC_Channel_1, DISABLE);//DAC DMA 关闭
        DAC_Cmd(DAC_Channel_1, ENABLE);//DAC1通道打开
        DAC_SetChannel1Data(DAC_Align_12b_R, 0X7FF);//刷新数据
        DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);//DAC软件 触发
}
main()
{
        CLK_CONF();
        GPIO_CONF();
        DAC_CONF();
        POWER_LED_ON;//开电源指示灯
        while (1)
        {
        };
}
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-1-14 11:13:29 | 显示全部楼层

RE:STM8L151K4的DA输出无变化

你开启DA的时钟了吗?
回复 支持 反对

使用道具 举报

1

主题

12

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-1-14 11:17:18 | 显示全部楼层

RE:STM8L151K4的DA输出无变化

CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE);//打开DAC时钟
这句应该是打开的吧,还有其他地方要开么?
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2012-1-14 14:05:14 | 显示全部楼层

RE:STM8L151K4的DA输出无变化

没见你写输出函数?你可以看一下例程,我这里也没有类似的芯片。没法实验,只能理论上分析。
回复 支持 反对

使用道具 举报

1

主题

12

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-1-14 21:30:46 | 显示全部楼层

RE:STM8L151K4的DA输出无变化

没什么输出不输出函数的,目前就是写入0X7FF,希望在PB4口得到1/2 VCC的电压。
对了这个是32PIN封装的芯片。
回复 支持 反对

使用道具 举报

1

主题

12

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2012-1-15 10:38:11 | 显示全部楼层

RE:STM8L151K4的DA输出无变化

已经解决,给新手参考。COMP时钟要打开。如果您觉得对您有帮助,那么就顶一下罗,谢谢
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "stm8l15x.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x_i2c.h"
#include "stm8l15x_dac.h"
#include "stm8l15x_clk.h"
#include "stm8l15x_syscfg.h"
#define POWER_LED_ON (GPIO_SetBits(GPIOB,GPIO_Pin_7)) //设置电源指示灯
void GPIO_CONF(void) //IO口初始化
{
GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_High_Fast); //PB7 LED ON
}
void CLK_CONF(void) //系统频率初始化
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //系统时钟分频
CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE); //打开DAC时钟
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE); //打开比较器时钟
}
void DAC_CONF(void) //初始化DAC
{
SYSCFG_RIIOSwitchConfig (RI_IOSwitch_15, ENABLE); //打开PB4 DA
DAC_DeInit(); //DAC初始化到默认值
DAC_Init( DAC_Channel_1,DAC_Trigger_None,DAC_OutputBuffer_Enable);//通道 触发 缓冲
DAC_Cmd (DAC_Channel_1,ENABLE); //使用通道1
DAC_SetChannel1Data(DAC_Align_12b_R,0x0FFF); //刷新数据
}
main()
{
CLK_CONF();//初始化时钟
GPIO_CONF();//初始化GPIO
POWER_LED_ON;//开电源指示灯
DAC_CONF();//DAC
while (1)
{

};
}
 
回复 支持 反对

使用道具 举报

1

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2020-9-8
发表于 2012-5-30 14:32:38 | 显示全部楼层

回复:STM8L151K4的DA输出无变化

 请问楼主用151K4的DAC输出波形的最高频率能够达到多少,我这只能到800多Hz,130个采样点
回复 支持 反对

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2012-6-9 12:07:38 | 显示全部楼层

RE:STM8L151K4的DA输出无变化

哦 原来不用独立初始化io口的,在函数库里面进行处理了。
回复 支持 反对

使用道具 举报

0

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-9-22 18:01:37 | 显示全部楼层

回复:STM8L151K4的DA输出无变化

不错,
回复 支持 反对

使用道具 举报

30

主题

218

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-1
发表于 2013-6-2 09:11:20 | 显示全部楼层

回复:STM8L151K4的DA输出无变化

回复第 6 楼 于2012-01-15 10:38:11发表:
已经解决,给新手参考。COMP时钟要打开。如果您觉得对您有帮助,那么就顶一下罗,谢谢
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include "stm8l15x.h"
#include "stm8l15x_gpio.h"
#include "stm8l15x_i2c.h"
#include "stm8l15x_dac.h"
#include "stm8l15x_clk.h"
#include "stm8l15x_syscfg.h"
#define POWER_LED_ON (GPIO_SetBits(GPIOB,GPIO_Pin_7)) //设置电源指示灯
void GPIO_CONF(void) //IO口初始化
{
GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_High_Fast); //PB7 LED ON
}
void CLK_CONF(void) //系统频率初始化
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //系统时钟分频
CLK_PeripheralClockConfig(CLK_Peripheral_DAC, ENABLE); //打开DAC时钟
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE); //打开比较器时钟
}
void DAC_CONF(void) //初始化DAC
{
SYSCFG_RIIOSwitchConfig (RI_IOSwitch_15, ENABLE); //打开PB4 DA
DAC_DeInit(); //DAC初始化到默认值
DAC_Init( DAC_Channel_1,DAC_Trigger_None,DAC_OutputBuffer_Enable);//通道 触发 缓冲
DAC_Cmd (DAC_Channel_1,ENABLE); //使用通道1
DAC_SetChannel1Data(DAC_Align_12b_R,0x0FFF); //刷新数据
}
main()
{
CLK_CONF();//初始化时钟
GPIO_CONF();//初始化GPIO
POWER_LED_ON;//开电源指示灯
DAC_CONF();//DAC
while (1)
{

};
}
 
 

COMP时钟要打开?  为何?
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版