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

查看: 8623|回复: 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版