Beaglebone移植DDS模块驱动(AD9833)
Data:2019/1/23 author:wangsong
需求:要求能有产生一路1MHZ以上的正弦激励信号,预留外接时钟接口,频率、幅值可调。
方案:
1、PWM波转模拟量(PAC =PWM to Analog Convertor)是一种PWM信号转模拟信号的专用芯片,模块最大频率只够200KHZ。(否决)
2、外接DDS模块,由beaglebone控制DDS模块,从而产生不同相位频率的正弦波,需要自己写驱动直接控制DDS。(测试)
3、DDS最基础的AD9833的频率就能达到需求,用集成STM32作为局部控制器,AM335X通过串口发送控制指令。(否决)
遇到问题:采购的AD9833用的是标准三线式串行接口兼容SPI,根据数据手册和电路原理图,则只需要这三个数据口;而beaglebone预留的是4线的SPI,其中对应引脚和设备树中对应如下表,来自于博客:https://blog.csdn.net/wyt2013/article/details/16921573 ,而三线制SPI和四线制的SPI是否只是删除一个单向数据线我没有深究,直接做法是根据AD8933数据手册里提供的时序,使用GPIO口模拟。其中数据手册以及其他参考资料在亚德诺(ADI)半导体官网下载:https://www.analog.com/cn/products/ad9833.html
说明:FSYNC输入是电平触发输入,用作帧同步和芯片使能。仅当FSYNC处于低电平时,才可将数据传输至器件。要开始串行数据传输,应将FSYNC拉低,并注意FSYNC至SCLK下降沿建立时间t 7 的最小值。FSYNC变为低电平后,串行数据即会在16个时钟脉冲的SCLK下降沿移入器件的输入移位寄存器。可在SCLK的第16个下降沿后将FSYNC拉高,并注意SCLK下降沿至FSYNC上升沿时间t 8 的最小值。或者,FSYNC可以在16倍数个SCLK脉冲期间保持低电平,然后在数据传输结束时变为高电平。这样,在FSYNC保持低电平期间,可以连续流形式载入16位字;FSYNC仅在载入最后一个字的第16个SCLK下降沿之后变为高电平。SCLK可以是连续的,也可以在写操作期间置于高电平或低电平空闲状态。无论何种情况,当FSYNC变为低电平(t 11 )时,SCLK都必须处于高电平。
实施情况:
参考源码:https://www.analog.com/cn/products/ad9833.html#product-requirement
参考博客:基于OMAPL138的Linux字符驱动_GPIO驱动AD9833(二)之cdev与read、write
https://blog.csdn.net/u014281970/article/details/82145664
对作者的源码的说明:
- 源码将硬件资源引脚写死,固定的三个引脚,所以不考虑设备树等高级写法。
- 源码采用的GPIO口模拟三线式串行通信,根据上面的时序写成。
调试过程中遇到的问题:
- GPIO口的定义,在程序中将GPIO口硬件资源写死指定的对应引脚,按照网上百度到的说明GPIO1_17指的则是32*1+17=49,则引脚号宏定义为49。根据BBB_Header_Table.pdf查得BBB的引脚号。但是调试时候发现不对,不知道是不是因为接了扩展板。
经过调试,大学霸博客提供的这两个图配上微雪的LCD扩展板可以使用,其中定义的GPIO_XX,驱动程序中写死的引脚号则是XX。但也不是所有的都能用,因为有很多引脚以及被使用,查看微雪扩展板的原理图,看看能使用哪些引脚,最好在beaglebone的、sys/class/gpio中添加下引脚进行测试,看看是否能正常输出高低电平。最终本人使用的引脚是P9header:P11 、P15 、 P22引脚,对应的驱动程序中引脚号是:30、48、49.
- 驱动源码中相关函数说明:
- file_operations结构体详解:
https://www.cnblogs.com/chen-farsight/p/6181341.html
- copy_to_user 、copy_from_user函数:
https://blog.csdn.net/xiaodingqq/article/details/80150347
- 内核MKDEV(MAJOR, MINOR)宏:
http://blog.sina.com.cn/s/blog_752fa65f0100osao.html
https://blog.csdn.net/angle_birds/article/details/7822416?utm_source=blogxgwz4
- gpio_request()函数:
https://blog.csdn.net/beyondioi/article/details/6984406
- Linux字符设备驱动之cdev_init()系列:
https://blog.csdn.net/tigerjibo/article/details/6412613
- linux硬件设备操作函数 open(/dev/ietctl, O_RDWR|...)
https://blog.csdn.net/pkigavin/article/details/8580703
- IOCTL函数用法详解:
https://blog.csdn.net/z_hualin/article/details/77892932
- 驱动模块编译时要保证依赖的内核源码和板子上运行的内核一致:
https://blog.csdn.net/qq_32059343/article/details/86572422
https://blog.csdn.net/qq_32059343/article/details/86572477
- 修改调试成功的源码分析:
https://blog.csdn.net/qq_32059343/article/details/86583353
实验结果:
Beaglebone移植DDS模块驱动(AD9833)相关推荐
- android+usb转串口+唯一id,Android平台3G模块驱动移植-USB转串口
Android平台3g模块是通过ril库来支持数据.短信.彩信.电话.第三方通话.USSD等功能的.其相应的组件有:rild用来为rild socket建立文件,pppd和chat为拨号文件,libr ...
- Linux移植EC20 4G模块驱动简易教程
关于4G模块常见的品牌与型号: 品牌 型号 市场价格 芯片组 状态 HUAWEI ME909s-821 210-260 海思芯片,只有五模 在售 HUAWEI ME909s-521 400左右 高通芯 ...
- 小白求,用RE文件管理器移植移远EC20 4G模块驱动。 有重谢。请加w jiao1998524
小白求,用RE文件管理器移植移远EC20 4G模块驱动. 有重谢.请加w jiao1998524
- WiFi模块驱动移植
项目背景 WiFi模块rlt8812au 替换成rlt8812cu,支持rlt8812cu驱动且保持兼容原有模块 驱动移植 根据厂家提供的驱动包,修改makefile和Kconfig文件,根据需要修改 ...
- GEC6818 移植 rtl8723bu wifi驱动
文章目录 1. 配置内核 2.RTL8723BU 模块驱动编译 2.1 下载解压 2.2 配置编译 3. openssl 移植 3.1 下载解压 3.2 配置 3.3 编译安装 4. libnl 移植 ...
- 十二、Hi3556移植RTL8189 WIFI驱动
Hi3556V200从代理拿到的SDK包中,是不包含RTL8189模块的驱动的.我们从某WIFI模块厂家要到了RTL8189的芯片驱动,于是开始着手移植驱动到平台上面. 一.Linux驱动添加RTL8 ...
- USB-WIFI RTL8188CU模块驱动
RTL8188CU模块概述 Realtek的8188cu模块WiFi是通过usb接口挂载设备.以下是我对模块使用的所有开发工作. Linux内核驱动适配和编译 由于芯片驱动官方已经最高支持kernel ...
- openwrt移植LTE模块
Openwrt移植LTE模块 1. 增加具体设备驱动 文档位置:/drivers/usb/serial/option.c 注意:是target开头目录下的文件 在文件中添加如下内容: static ...
- Android 开机自动加载新wifi模块驱动
在android ROM 开发中经常会遇到产品更换wifi模块的情况,一般常见的wifi驱动android内核中自带都有,无需过多调试,要是碰上内核中没有的就需要根据厂商提供的驱动进行移植. wifi ...
- Hi3798移植4G模块(移远EC20)
Hi3798移植4G模块(移远EC20) 一.前言 二.USB驱动修改 2.1 添加VID和PID信息 2.2 添加空包处理机制 2.3 添加复位重连机制 2.4 修改内核配置 三.GoBiNet测试 ...
最新文章
- 网络流Dinic cur当前弧优化
- 什么场景使用mysql的存储过程_mysql存储过程的使用
- windows 10 内置bash 安装32位支持
- 8s yaml 配置生成_cfg4py:一个严肃的Python配置模块应有的风格-层级式、部署环境自适应、自动补全...
- 缓存系列之一:buffer、cache与浏览器缓存
- Python打包exe,以及解决闪退
- df -h无响应问题解决
- Flask入门(三)~补充及虚拟环境
- VOIP技术发展综述与外呼系统的关系
- 关于DM MPP的搭建
- 字符串折叠、涂色问题
- 应用实践 | Apache Doris 在网易互娱的应用实践
- sakila数仓实战案例
- Python excel转成html页面 excel 在线预览
- normalize.css 类似,使用normalize.css遇到的问题?
- 2012系统服务器网络限制,Windows server 2012 r2对计算机的网络速度限制在~30mbps
- 2022年,前端er们都在看哪些网站?(含面试、接活、学习、摸鱼等)
- android 逆向入门知识
- 两台Sawyer机械臂在rviz中的运动规划
- 概率dp 期望 逆推