找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2223|回复: 10
打印 上一主题 下一主题
收起左侧

如何将小数写入AD9833寄存器

[复制链接]
跳转到指定楼层
楼主
ID:725527 发表于 2020-5-9 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大家,我要写2.68进入AD9833的频率寄存器里面,不知如何写这个小数,浮点型如何处理,盼大神指教!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2020-5-9 17:14 | 只看该作者
浮点数组成是有标准的,可以把浮点分解成4个8位数写入AD9833寄存器,读出来时再转成浮点数。
回复

使用道具 举报

板凳
ID:351097 发表于 2020-5-9 21:16 | 只看该作者
可以扩大100倍,以整数的方式保存
回复

使用道具 举报

地板
ID:748012 发表于 2020-5-9 23:25 来自手机 | 只看该作者
浮点数需要按照一个标准,可以分解成4个8位数,读出来就可以转换为浮点数。
回复

使用道具 举报

5#
ID:420836 发表于 2020-5-10 04:33 | 只看该作者
有时,我们将分数乘以10 ^ n来将分数转换为整数,n是小数位数。回读时,我们将其除以10 ^ n。
回复

使用道具 举报

6#
ID:280512 发表于 2020-5-10 08:26 | 只看该作者
可以,把小数化成整型数,分别存储。
回复

使用道具 举报

7#
ID:739441 发表于 2020-5-11 09:13 | 只看该作者
你是要输出比如10.2hz这样的需求吗?可以在设置频率的时候缩小10倍就可以了。dds本来就可以输出最小精度0.1hz的。
回复

使用道具 举报

8#
ID:57657 发表于 2021-9-12 18:10 | 只看该作者
不明白AD9833是什么芯片? 如果是传输、存储小数, 需要用 union 联合体。
回复

使用道具 举报

9#
ID:624769 发表于 2021-9-12 23:27 | 只看该作者
npn 发表于 2021-9-12 18:10
不明白AD9833是什么芯片? 如果是传输、存储小数, 需要用 union 联合体。

你真是…………
你确定人家 1年半 以前问的问题,还会回来 继续追问么?
而且其实不需要什么联合体。
计算机存储的数据本来就只是 0 和 1 ,浮点也好,10进制也好,都是给 人 看的,机器压根不管是什么。所以,只要读取这个浮点变量的首地址,通过指针 依次 把连续的4个地址的数据写入目标就可以了。
回复

使用道具 举报

10#
ID:744327 发表于 2021-9-13 08:56 | 只看该作者
楼主分析的很对,有小数时,需要用到浮点型数据变量。依次 把连续的4个地址写进来就可以了。
回复

使用道具 举报

11#
ID:382454 发表于 2021-9-19 12:01 | 只看该作者
浮点数写进去,计算出来是有一点点误差的,我的做法是2.68*100=268,把268写进去,读出来之后再除于100即得到2.68。这样多好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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