Arduino 控制 AD9850 做一个智能音箱

CSDN话题挑战赛第2期
参赛话题:学习笔记

使用Arduino 控制 AD9850 做一个智能音箱

来自 Analog Devices 9850的数据手册 :(http://www.analog.com/media/en/technical-documentation/data-sheets/AD9850.pdf)
在这里插入图片描述
AD9850是一款高度集成的设备,它使用先进的DDS技术,结合内部高速、高性能D/a转换器和比较器,形成完整的数字可编程频率合成器和时钟发生器功能。当参考精确的时钟源时,AD9850生成光谱纯、频率/相位可编程的模拟输出正弦波。这个正弦波可以直接用作频率源,也可以转换为方波,用于灵活的时钟发生器应用。AD9850的创新型高速DDS核心提供32位频率调谐字,对于125 MHz基准时钟,输出调谐分辨率为0.0291 Hz。输入AD9850的电路结构允许产生高达参考时钟频率一半的输出频率(或62.5 MHz),并且输出频率可以每秒高达2300万个新频率的速率进行数字更改(异步)。该设备还提供五位数字控制相位调制,可使其输出以180°、90°、45°、22.5°、11.25°及任意组合的增量进行相移。

AD9850还包含一个高速比较器,可配置为接受DAC的(外部)滤波输出,以生成低抖动方波输出。这有助于将设备用作灵活的时钟发生器功能。频率调谐、控制和相位调制字通过并行字节或串行加载格式加载到AD9850中。并行加载格式由五个迭代加载组成8位控制字(字节)。第一字节控制相位调制、掉电启用和加载格式;字节2至5包含32位频率调谐字。串行加载通过单个管脚上的40位串行数据流完成。AD9850 Complete DDS使用先进的CMOS技术提供了这一突破性的功能和性能水平功耗仅为155 mW(3.3 V电源)。AD9850采用节省空间的28导SSOP表面安装封装。规定在-40°C至+85°C的扩展工业温度范围内运行。

AD9850 库关键字

重置 KEYWORD2
ApplySignal KEYWORD2
设置频率 KEYWORD2
SetPhase KEYWORD2
递增频率 KEYWORD2
增量阶段 KEYWORD2
断电 KEYWORD2
GetFreqResolution KEYWORD2
GetPhaseResolution KEYWORD2

“AD9850 是一款高度集成的器件,采用先进的 DDS 技术与内部高速、高性能 D/A 转换器和比较器相结合,形成完整的数字可编程频率合成器和时钟发生器功能。当参考准确的时钟源时, “

“AD9850 的创新高速 DDS 内核提供 32 位频率调谐字,在 125 MHz 参考时钟输入下,输出调谐分辨率为 0.0291 Hz。AD9850 的电路架构允许生成高达 1-参考时钟频率的一半(或 62.5 MHz),输出频率可以以每秒高达 2300 万个新频率的速度进行数字更改(异步)。该器件还提供 5 位数控相位调制,可实现相位以 180°、90°、45°、22.5°、11.25° 及其任意组合的增量移动其输出。AD9850 还包含一个高速比较器,可配置为接受 DAC 的(外部)滤波输出产生一个低抖动的方波输出。这有助于该设备用作灵活的时钟发生器功能。”

20MHz 的正弦波输出

在这里插入图片描述

方波输出。占空比调整为 50%

在这里插入图片描述

API库函数文件

//The API is in work.

// Define AD9850 using Serial mode loading.
AD9850 ( uint8_t freqUpdate, uint8_t wordClk, uint8_t reset,
	uint8_t powerDownPin, uint8_t dataPin );

// Define AD9850 using predefined pins.
// Uses Direct Port writes for maximum speed.
// See AD9850.h files for pin definitions
AD9850 ( bool useSerialLoad, uint8_t reset );

// Define AD9850 using Parallel mode loading.
// This will require 8 separate digitalWrites for each pin.
AD9850 ( uint8_t freqUpdate, uint8_t wordClk, uint8_t reset,
	uint8_t data7, uint8_t data6, uint8_t data5, uint8_t data4,
	uint8_t data3, uint8_t data2, uint8_t data1, uint8_t data0 );

void ApplySignal ( float frequencyInHz, float phaseInDeg );

void SetFrequency ( float frequencyInHz );

void IncrementFrequency ( float frequencyInHz );

void SetPhase ( float phaseInDeg );

void IncrementPhase ( float phaseInDeg );

void Reset ( void );

void PowerDown ( bool enable );

float GetFreqResolution ( void ) { return RESOLUTION_HZ; }

float GetPhaseResolution ( void ) { return RESOLUTION_DEG; }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr Robot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值