搜索
bottom↓
回复: 12

请问STM8S207有无ADC1功能,ADC1的连续转换如何使用?

[复制链接]

出0入0汤圆

发表于 2012-1-30 10:52:59 | 显示全部楼层 |阅读模式
各位大虾,STM8S手册上写得有点模糊,STM8S207和STM8S208都有ADC1功能吗?ADC1的连续转换功能有无例程借鉴?

         谢谢!

出0入0汤圆

 楼主| 发表于 2012-1-30 10:55:49 | 显示全部楼层
错了,应该是ADC1连续扫描模式功能如何使用?

出0入8汤圆

发表于 2012-1-30 11:19:46 | 显示全部楼层
STM8S的数据手册,Doc ID 14733 Rev 10  第12页  有个STM8S20xxx performance line block diagram,只有里面ADC2

如果你还不相信,可以去STM8S外设固件库,找到stm8s.h文件



/******************************************************************************/
/*                          Peripherals declarations                          */
/******************************************************************************/

#if defined(STM8S105) || defined(STM8S103) || defined(STM8S903)
#define ADC1 ((ADC1_TypeDef *) ADC1_BaseAddress)
#endif /* (STM8S105) ||(STM8S103) || (STM8S903) */

#if defined(STM8S208) || defined(STM8S207)
#define ADC2 ((ADC2_TypeDef *) ADC2_BaseAddress)
#endif /* (STM8S208) ||(STM8S207)  */

出0入0汤圆

 楼主| 发表于 2012-1-30 11:36:17 | 显示全部楼层
回复【2楼】Grant
-----------------------------------------------------------------------

我信了!谢谢Grant!

出0入0汤圆

发表于 2012-1-30 13:41:07 | 显示全部楼层
#define SCAN_CHANNLE_NUM        4

typedef struct{
        unsigned int Data[10];
}ADC_Struct;

ADC_Struct ADC;

void Init_ADC(void)
{
        CLK->PCKENR2 |= CLK_PCKENR2_ADC;
        //*** ADC INITIALIZATION ***               
        ADC1->CSR= ADC1_CSR_EOCIE | (SCAN_CHANNLE_NUM & ADC1_CSR_CH); // AD interrupt enable, channel count       
        ADC1->CR1|= ADC1_CR1_CONT | ((7<<4) & ADC1_CR1_SPSEL); // continuous conversion mode, fmaster/18
       
        ADC1->CR2 = ADC1_CR2_SCAN | ADC1_CR2_ALIGN;        //Scan mode,Data Align right
        ADC1->CR3 = ADC1_CR3_DBUF;        //Enable ADC Data Buffer
       
        ADC1->TDRH= 0x00;        // disable Schmitt trigger on AD input
        ADC1->TDRL= 0x03;
       
        ADC1->CR1|= ADC1_CR1_ADON;                // ADC on
        _delay(20);                        // wait for stabilization (min 7 us)
        ADC1->CR1|= ADC1_CR1_ADON;
}

void Start_ADC_Scan(void)
{
        ADC1->CSR = ADC1_CSR_EOCIE | (SCAN_CHANNLE_NUM & ADC1_CSR_CH); // AD interrupt enable,clear end of conversion flag
        ADC1->CR1 |= ADC1_CR1_ADON;
}

void Get_ADC_Data(void)
{
        ADC.Data[0] = (unsigned int)(ADC1->DB0RH<<8) |ADC1->DB0RL;       
        ADC.Data[1] = (unsigned int)(ADC1->DB1RH<<8) |ADC1->DB1RL;       
        ADC.Data[2] = (unsigned int)(ADC1->DB2RH<<8) |ADC1->DB2RL;       
        ADC.Data[3] = (unsigned int)(ADC1->DB3RH<<8) |ADC1->DB3RL;       
        ADC.Data[4] = (unsigned int)(ADC1->DB4RH<<8) |ADC1->DB4RL;       
        ADC.Data[5] = (unsigned int)(ADC1->DB5RH<<8) |ADC1->DB5RL;       
        ADC.Data[6] = (unsigned int)(ADC1->DB6RH<<8) |ADC1->DB6RL;       
        ADC.Data[7] = (unsigned int)(ADC1->DB7RH<<8) |ADC1->DB7RL;       
        ADC.Data[8] = (unsigned int)(ADC1->DB8RH<<8) |ADC1->DB8RL;
        ADC.Data[9] = (unsigned int)(ADC1->DB9RH<<8) |ADC1->DB9RL;
}

把Get_ADC_Data();Start_ADC_Scan();放ADC中断里就OK。
这个是ADC1的连续扫描转换程序,你把所有的ADC1改成ADC2就行。

出0入0汤圆

发表于 2012-1-30 15:14:12 | 显示全部楼层
我在一个STM8S103的帖子里面有ADC1在一个通道上连续转换的程序。。。。。有兴趣自己去找。。。

出0入0汤圆

 楼主| 发表于 2012-1-30 17:58:25 | 显示全部楼层
回复【4楼】zhshliu
-----------------------------------------------------------------------

回复【5楼】gwdong
-----------------------------------------------------------------------

谢谢以上大虾,小弟刚学,多谢指教!

出0入0汤圆

发表于 2012-2-2 18:06:07 | 显示全部楼层
单通道的搞了一段时间 搞定了。 双通道 采用DMA 采集。。搞了一个星期了 没头绪。。不大懂。。。将结果存放在ADValue[2]数组里,但我在仿真的时候。只有ADValue[0]有数值,ADValue[1]一直都没数值。头大。。哪位 大虾 能给小弟 讲解讲解。。。不胜感激。。加Q 最好。。本人QQ  525324262.。

出0入0汤圆

发表于 2012-2-3 12:03:43 | 显示全部楼层
看选型手册就知道了,,
或者看DATASHEET也一样。。。

出0入0汤圆

发表于 2012-12-3 11:35:53 | 显示全部楼层
zhshliu 发表于 2012-1-30 13:41
#define SCAN_CHANNLE_NUM        4

typedef struct{

楼主你好:我用的STM8A的片子,所有的AIN口都用来采样了,但这个片子的AIN12不能用扫描模式,可以用什么方法解决这个问题,谢谢

出0入0汤圆

发表于 2014-8-18 16:47:47 | 显示全部楼层
zhshliu 发表于 2012-1-30 13:41
#define SCAN_CHANNLE_NUM        4

typedef struct{

不对啊,STM8S207R8T6里面根本就没有那么多数据寄存器,只有ADC2->DRL和ADC2->DRH,不能按照你的例程改的

出0入0汤圆

发表于 2014-9-14 17:20:24 | 显示全部楼层
mark一下,正好在用

出0入0汤圆

发表于 2017-10-21 10:14:38 | 显示全部楼层
gwdong 发表于 2012-1-30 15:14
我在一个STM8S103的帖子里面有ADC1在一个通道上连续转换的程序。。。。。有兴趣自己去找。。。 ...

翻了你的例程,没有找到连续转换的程序啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 05:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表