电赛总结(二)——AD芯片总结之音频处理芯片ADC8009
一、特性参数
1、专门用来用音频处理的AD芯片
2、内部固定好8K的采样速率
3、8位AD芯片
二、内部结构图
三、芯片管脚图
四、管脚功能说明
管脚名称 | 功能 |
IN0~IN7 | 数据输入端 |
ABC |
数据输入端口选择 |
ST |
ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D 转换;在转换期间,ST 应保持低电平。 |
EOC |
EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换 |
OE |
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0 为数字量输出线。 |
D7-D0 | 数字量输出线 |
CLK |
时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ |
VREF(+) | 参考电压输入正极 |
VREF(-) | 参考电压输入负极 |
五、STM32F103ZE驱动程序
#include "stm32f10x.h"#define CLK GPIO_Pin_0 //#define B GPIO_Pin_1 //#define C GPIO_Pin_2 #define ALE GPIO_Pin_4 //#define IN0 GPIO_Pin_4 #define ST GPIO_Pin_5 #define OE GPIO_Pin_6 //#define A GPIO_Pin_7#define D0 GPIO_Pin_0 #define D1 GPIO_Pin_1 #define D2 GPIO_Pin_2 #define D3 GPIO_Pin_3 #define D4 GPIO_Pin_4 #define D5 GPIO_Pin_5 #define D6 GPIO_Pin_6 #define D7 GPIO_Pin_7 #define EOC GPIO_Pin_8double val=0;void delay(u32 kk) {while(kk--); }/* const unsigned short CLK= GPIO_Pin_0; const unsigned short B=GPIO_Pin_1; const unsigned short C=GPIO_Pin_2; const unsigned short ALE=GPIO_Pin_3; const unsigned short IN0=GPIO_Pin_4; const unsigned short ST=GPIO_Pin_5; const unsigned short OE=GPIO_Pin_6; const unsigned short A=GPIO_Pin_7;const unsigned short D0=GPIO_Pin_0; const unsigned short D1=GPIO_Pin_1; const unsigned short D2=GPIO_Pin_2; const unsigned short D3=GPIO_Pin_3; const unsigned short D4=GPIO_Pin_4; const unsigned short D5=GPIO_Pin_5; const unsigned short D6=GPIO_Pin_6; const unsigned short D7=GPIO_Pin_7; const unsigned short EOC=GPIO_Pin_8; */void ad_init() {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_ResetBits(GPIOA, ALE); // GPIO_ResetBits(GPIOA, A); // GPIO_ResetBits(GPIOA, B); // GPIO_ResetBits(GPIOA, C);//delay(10); GPIO_SetBits(GPIOA, ALE); //CLK }void adc0809_input() {//ST²úÉúÉÏÉýÑغÍϽµÑØ GPIO_ResetBits(GPIOA, ST);delay(10);GPIO_SetBits(GPIOA,ST);delay(10);GPIO_ResetBits(GPIOA, ST);delay(10);while(GPIO_ReadInputDataBit(GPIOB, EOC)==0);GPIO_SetBits(GPIOA,OE);val=GPIO_ReadInputDataBit(GPIOB, D0)*0x0001+GPIO_ReadInputDataBit(GPIOB, D1)*0x0002+GPIO_ReadInputDataBit(GPIOB, D2)*0x0004+GPIO_ReadInputDataBit(GPIOB, D3)*0x0008+GPIO_ReadInputDataBit(GPIOB, D4)*0x0010+GPIO_ReadInputDataBit(GPIOB, D5)*0x0020+GPIO_ReadInputDataBit(GPIOB, D6)*0x0040+GPIO_ReadInputDataBit(GPIOB, D7)*0x0080;GPIO_ResetBits(GPIOA,OE);//val=val*2*0.98; }void timer_init() //¶¨Ê±Æ÷ÖжÏÅäÖà {NVIC_InitTypeDef NVIC_InitStructure; //ÅäÖÃÖжϽṹ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //ÅäÖÃÄÚ²¿Ê±ÖÓNVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);//¶¨Ê±Æ÷3µÄÖжϳõʼ»¯ TIM_TimeBaseStructure.TIM_Period=100; //ÓëÏÂÒ»ÐÐÓï¾äÅäºÏ£¬µ¥Æ¬»úʱÖÓÐźÅĬÈÏÇé¿öÏÂÊÇ72MHz£¬¸Ä10000Õâ¸öÊý¿ÉÒÔÉèÖÃÖжÏʱ¼äTIM_TimeBaseStructure.TIM_Prescaler=72; //ÕâÐÐÒ²¿ÉÒԸģ¬µ«ÊÇΪÁËÊý¾Ý·ÖÅäÇå³þ£¬»¹ÊÇÉÏÒ»ÐÐÕû°ÙÕû°ÙµØ¸Ä±È½ÏºÃTIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ITConfig(TIM3,TIM_IT_Update|TIM_IT_Trigger,ENABLE);TIM_Cmd(TIM3, ENABLE); }int i=1; void TIM3_IRQHandler() {if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET) //È·¶¨½øÈëÁËÕâ¸öÖÐ¶Ï {TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // Çå³ý±êÖ¾£¬±£ÏÕÆð¼ûÒª¼Ó adc0809_input();if(i==1){GPIO_SetBits(GPIOA, GPIO_Pin_8);i=0;}else{i=1;GPIO_ResetBits(GPIOA, GPIO_Pin_8);}} }void ADC0809_Clock() {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//PWM--->100HzTIM_TimeBaseStructure.TIM_Period=10; TIM_TimeBaseStructure.TIM_Prescaler=12;TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // //PA6--->50% //?????TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse=5; //pulse????period??????TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OC1Init(TIM2, &TIM_OCInitStructure);// //PA7--->40% // TIM_OCInitStructure.TIM_Pulse=40; // TIM_OC2Init(TIM3, &TIM_OCInitStructure); // //PB0--->60% // TIM_OCInitStructure.TIM_Pulse=60; // TIM_OC3Init(TIM3, &TIM_OCInitStructure); // //PB1--->80% // TIM_OCInitStructure.TIM_Pulse=80; // TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_Cmd(TIM2, ENABLE); }int main() { ad_init();GPIO_SetBits(GPIOA, GPIO_Pin_3); ADC0809_Clock(); timer_init(); while(1){} }
转载于:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4741394.html
电赛总结(二)——AD芯片总结之音频处理芯片ADC8009相关推荐
- 电赛汇总(二):常用传感器电路模块设计
电赛汇总(二):常用传感器电路模块设计 这一章节主要详细记录各种常用的传感器的电子芯片型号.设计原理与思想,以便随时查看翻阅.这部分内容出自黄根春等学者著的<全国大学生电子设计竞赛教程–基于TI ...
- 无名创新——2019年TI杯电赛飞行器赛题关键问题汇总
从2018年12月以来,无名创新TI飞控累计服务了全国高校累计超400个电赛飞行器学生团队,无名创新TI系列产品根据客户反馈.市场需求,完成了一次次软硬件迭代升级,比赛临近,针对近期客户担心是否能直接 ...
- 都2021年了,你还在考虑电赛飞行器赛题,备赛是否有必要用基于TI处理芯片的飞控问题?
无名创新售后群问题节选 @无名小哥 能问下今年国赛会不会指定某一款飞控呀? 答:都2021年了,你还在考虑电赛飞行器赛题备赛是否有必要用基于TI处理芯片的飞控问题? 暂不论官方是否会限定TI芯片的飞控 ...
- 电赛综合测评题练习(二)-(与2015年电赛综合测评要求类似)
2015年电赛综合测评(部分要求有区别) 系列文章 T1:电赛综合测评题练习(一)-(与2013年电赛综合测评要求类似) 点击下载仿真文件1(请使用Multisim 14及以上版本打开) T2:电赛综 ...
- (电赛)数字信号发生方案和dds芯片选型经验
目录 前言 一.什么是DAC.DDS? 1.DAC介绍 2.DDS介绍 3.电流输出DDS 二.FPGA+DAC方案 1.芯片调试记录:AD9708 2.备注 三.MCU+DDS方案 0.几种常用DD ...
- 带学生参加电赛,5个国一,2个国二!15个省奖!
大家好,我是张巧龙,转眼21年的各省电赛就结束了,今年的电赛确实让人难忘,不管是题目还是比赛形式,亦或是比赛时间一拖再拖. 国赛结果也在前段时间公示了,参与人数再次增长. 据我所知,有一些省份由于疫情 ...
- 基于stm32非接触式物体尺寸形态测量仪(电赛获得省二)
目录(获取原文及完整代码进入主页) 一.系统方案论证与比较 1.1 系统结构 1.2 方案选择与比较 1.2.1方案一 1.2.2 方案二 1.2.3 方案选择及论证 二.理论分析与计算 2.1 图形 ...
- 2020电赛省赛实战(二)ADS1292心电检测仪
在电赛开始前的最后时间我再给大家分享一下我自己实战的结果. 首先这是我个人准备的套件,包括: 1.一个stm32单片机 2.ad1292心电检测模块(按技术手册布线即可) 3.用于捕获心电信号的电极( ...
- 如何准备电赛?19年电赛经验总结!
关注.星标公众号,直达精彩内容 写在前面的话 最近忙着各大厂的实习面试,趁着准备简历的功夫回顾了一下19年电赛的比赛经历,总体来说还算说得过去,现在把我参加电赛的经验分享出来,希望对之后的学弟学妹们有 ...
最新文章
- 台风怎么看内存颗粒_生态板、密度板、颗粒板各有好处,看你怎么用了!
- 如何查他人【思科CCIE证书真伪、有效期】
- Unicode、UTF-8、Big Endian、Little Endian、GBK、UCS-2
- PS 色调——老照片效果
- [ JS 进阶 ] Repaint 、Reflow 的基本认识和优化 (2)
- STM32F407之资源
- group by很多字段是不是会很慢_3分钟短文 | MySQL在分组时,把多列合并为一个字段!
- spring作用域单例和global_面试必备 | 69道Spring面试题
- 深入浅出PHP amp; MySQL,深入浅出 PHP MySQL
- Android开发——监听Android手机的网络状态
- 编译ionic应用时遇到“To run dex in process, the Gradle daemon needs a larger heap.”
- 谷歌大中华区总裁李开复离职
- DX11:先定一个小目标,比如:把DX11龙书上的知识点系统的总结下来
- JS鼠标放上移开 显示隐藏图标 的代码思路
- Python编程基础——编程环境准备工作
- Android使用WebView加载Url时提示“请在微信客户端打开链接”
- python按哪个键运行代码_python运行快捷键是哪个
- Mac 超详细入门指南,收藏了!
- 谷歌浏览器Chrome无法翻译的解决办法
- Ableton Max for Live Collection ALP 音频MIDI效果合成控制设备拓展合集