树莓派python蓝牙_一种基于树莓派和Python语言的频率合成器系统的制作方法

本文主要是介绍树莓派python蓝牙_一种基于树莓派和Python语言的频率合成器系统的制作方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

847427771782.gif

本发明涉及一种频率合成器系统,尤其是涉及一种基于树莓派和Python语言的频率合成器系统。

背景技术:

几乎每个RF和微波系统都需要频率合成器。频率合成器产生本振信号以驱动混频器、调制器、解调器及其他许多RF和微波器件。近年来频率合成技术的发展十分迅猛,实际中采用的频率合成方案有直接频率合成、数字锁相环频率合成以及直接数字频率合成。直接频率合成法产生的频率范围有限,而且设备体积庞大;DDS产生的频率较低,且输出信号的相位噪声指标差;数字锁相环频率合成的系统结构简单,输出频谱纯度高,它是目前频率合成技术中的主要形式。

锁相环频率合成器的控制多采用软件与硬件相结合的设计方案,大多数控制方案多采用单片机、FPGA等对锁相环频率合成器芯片内的参考分频器和反馈支路分频器进行寄存器编程。单片机控制系统往往主频太低,指令执行速度慢,导致系统整体性能不高;而且单片机内部寄存器配置复杂,导致开发周期变长;而且开发上述系统的编程语言大部分使用C语言,C语言相对“低级的”语言,软件功能相对较弱,软件开发难度较大,使整个系统开发速度降低。FPGA控制系统是通过纯硬件来实现各种时序的输出,而纯硬件会出现输出短暂的不稳定现象,这可能会给设计带来致命的危险。采用单片机和FPGA的控制方式其软件程序一般不开源,因此导致成本更高,对硬件的要求也要更高。

技术实现要素:

本发明的目的主要是为了解决上述技术问题,而提供一种基于树莓派和Python语言的频率合成器系统。

实现本发明的技术方案是:

一种基于树莓派和Python语言的锁相环频率合成器系统,包括计算机Putty客户端、树莓派开发板、频率合成模块、OLED显示模块、电源模块,其特征在于所述计算机Putty客户端通过树莓派开发板连接频率合成模块和OLED显示模块,电源模块为各模块提供工作电源;用户通过计算机Putty客户端远程登录树莓派开发板,运行设定输出频率的Python指令,树莓派开发板运行频率解析程序和读写寄存器程序,对频率合成模块的寄存器配置,实现频率输出,频率合成模块向树莓派开发板发送频率信息和锁定状态信息,树莓派开发板向OLED显示模块发送数据,OLED显示模块显示频率信息和锁定状态信息。所述的树莓派开发板包括BCM2835芯片和GPIO扩展接口,所述的GPIO扩展接口包括3线SPI接口和4线SPI接口,所述的计算机Putty客户端通过SSH协议接入树莓派开发板的IP地址,然后登录树莓派账号进入系统,所述的频率合成模块包括锁相环频率合成器芯片HMC837LP6CE芯片,所述的HMC837LP6CE芯片、OLED显示模块分别通过4线SPI接口、3线SPI接口与树莓派开发板通讯相连,所述的电源模块包括3.3V电源模块和5.5V电源模块,所述的3.3V电源模块、5.5V电源模块分别为OLED显示模块、频率合成模块提供电源电压,所述的计算机Putty客户端远程登陆树莓派开发板,所述的树莓派开发板完成对GPIO和SPI的配置,在Python语言中输入设定输出频率f的Python指令,运行频率解析程序,根据f的范围分别给射频输出分频比赋予不同的值,从而确定频率合成器工作在基频模式还是二分频模式,然后根据公式fvco=f/k得到压控振荡器的输出频率fvco,然后根据公式N=fvoc/fxtal得到反馈支路分频比N,对N 向下取整得到N的整数部分赋值给N1,对N-N1向下取整除以224后赋值给N2,之后运行读写寄存器程序,所述的树莓派开发板通过4线SPI接口向HMC837LP6CE芯片内的寄存器进行读写操作,依次配置参考分频器、Δ-Σ调制器、电荷泵电流和偏置电流、VCO子系统等所在的寄存器,然后开始执行配置频率操作,分别向整数寄存器Reg03h和小数寄存器Reg04h写入数据N1和N2,所述的频率合成模块输出设定频率f,然后所述的树莓派开发板从HMC837LP6CE芯片内的寄存器Reg12h读取锁相环锁定状态数据,所述的树莓派开发板运行OLED显示程序,将频率信息和锁定状态信息通过3线SPI接口写入OLED显示模块,所述的OLED显示模块显示频率信息和锁定状态信息。

所述的树莓派开发板内部频率解析程序、读写寄存器程序和OLED显示程序都采用Python语言进行编程。

所述的Python语言使用了扩展模块RPi.GPIO集成库、spidev集成库,PRi.GPIO集成库用于驱动树莓派开发板的GPIO扩展接口,spidev模块用于软件模拟SPI通信协议、驱动SPI设备。

所述的OLED显示模块(4)使用的是0.96寸的OLED显示屏,分辨率为128×64,控制芯片为SSD1315。

所述的树莓派开发板采用BCM2835单核1GHz处理器,512M 内存,带有Micro SD卡插槽,搭载BCM43438 WiFi/BT无线芯片,提供802.11n无线网络和蓝牙4.1连接,miniHDMI接口,40PIN GPIO扩展接口,CSI摄像头接口,支持Linux嵌入式系统。

所述的频率合成模块采用三重频带的锁相环频率合成器芯片HMC837LP6CE,能够输出1025-1150、2050-2300、4100-4600MHz的频率。

所述的树莓派开发板采用Raspbian操作系统。

与现有技术相比,本发明具有以下显而易见的突出实质性特点和显著技术进步:

本发明采用树莓派开发板作为核心控制模块,树莓派芯片采用当前比较先进的ARM11芯片主频1GHz的BCM2835作为主控制器芯片,指令运算速度较单片机有了大幅度提升,提高了系统性能。编程语言采用开源的脚本语言Python语言,Python语言与C语言相比简洁高效,并且有很多扩展模块可以直接调用,缩短了开发周期。采用开源的嵌入式控制系统Raspbian系统,与FPGA纯硬件控制系统和单片机控制系统相比,系统稳定性更强同时降低了开发成本。

附图说明

图1为本发明提供的系统原理图。

图2为本发明提供的系统连接图。

图3为本发明提供的系统程序运行流程图。

具体实施方式

下面结合附图和优选实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,并给出了详细的实施方式和具体的操作过程,然而,应当将本发明理解成并不局限于以下描述的这种实施方式,并且本发明的技术理念可以与其他公知技术或功能与那些公知技术相同的其他技术组合实施。

实施例一:

参见图1,本基于树莓派和Python语言的频率合成器系统,包括计算机Putty客户端1、树莓派开发板2、频率合成模块3、OLED显示模块4和电源模块5,其特征在于:所述计算机Putty客户端1通过树莓派开发板2连接频率合成模块3和OLED显示模块4,电源模块5为各模块提供工作电源;用户通过计算机Putty客户端1远程登录树莓派开发板2,运行设定输出频率的Python指令,树莓派开发板2运行频率解析程序和读写寄存器程序,对频率合成模块3的寄存器配置,实现频率输出,频率合成模块3向树莓派开发板2发送频率信息和锁定状态信息,树莓派开发板2向OLED显示模块4发送数据,OLED显示模块4显示频率信息和锁定状态信息。

实施例二:

如图1、2所示,本基于树莓派和Python语言的频率合成器系统,包括计算机Putty客户端1、树莓派开发板2、频率合成模块3、OLED显示模块4、电源模块5,所述的树莓派开发板2包括BCM2835芯片2-1和GPIO扩展接口2-2,所述的GPIO扩展接口2-2包括3线SPI接口2-2-1和4线SPI接口2-2-2,所述的计算机Putty客户端1通过SSH协议接入树莓派开发板2的IP地址,然后登录树莓派账号进入系统,所述的频率合成模块包括锁相环频率合成器芯片HMC837LP6CE芯片3-1,所述的HMC837LP6CE芯片3-1、OLED显示模块4分别通过4线SPI接口2-2-2、3线SPI接口2-2-1与树莓派开发板2通讯相连,所述的电源模块4包括3.3V电源模块5-1和5.5V电源模块5-2,所述的3.3V电源模块5-1、5.5V电源模块5-2分别为OLED显示模块4、频率合成模块3提供电源电压,用户通过计算机Putty客户端1远程登录树莓派开发板2,树莓派开发板2完成对GPIO和SPI的配置,在Python语言中输入设定输出频率的Python指令后,运行频率解析程序模块,然后向频率合成模块3进行寄存器读写操作,实现对频率合成模块3中HMC837LP6CE芯片3-1的寄存器配置,实现频率输出,所述的频率合成模块3向树莓派开发板2发送频率信息和锁定状态信息;所述的树莓派开发板2向OLED显示模块4发送数据,所述的OLED显示模块4显示频率信息和锁定状态信息。

所述的树莓派开发板2内部频率解析程序、读写寄存器程序和OLED显示程序都采用Python语言进行编程。

所述的Python语言使用了扩展模块RPi.GPIO集成库、spidev集成库,PRi.GPIO集成库用于驱动树莓派开发板(2)的GPIO扩展接口,spidev模块用于软件模拟SPI通信协议、驱动SPI设备。

所述的OLED显示模块(4)使用的是0.96寸的OLED显示屏,分辨率为128×64,控制芯片为SSD1315。

所述的树莓派开发板2采用BCM2835单核1GHz处理器,512M 内存,带有Micro SD卡插槽,搭载BCM43438 WiFi/BT无线芯片,提供82.11n无线网络和蓝牙4.1连接,miniHDMI接口,40PIN GPIO扩展接口,CSI摄像头接口,支持Linux嵌入式系统。

所述的频率合成模块3采用三重频带的锁相环频率合成器芯片HMC837LP6CE,能够输出1025-1150、2050-2300、4100-4600MHz的频率。

所述的树莓派开发板3采用Raspbian操作系统。

程序运行流程:如图3所示,设定输出频率f,根据f的范围分别给射频输出分频比赋予不同的值,从而确定频率合成器工作在基频模式还是二分频模式,然后根据公式fvco=f/k得到压控振荡器的输出频率fvco,然后根据公式N=fvco/fxtal得到反馈支路分频比N,对N 向下取整得到N的整数部分赋值给N1,对N-N1向下取整除以224后赋值给N2,之后打开SPI写寄存器操作,依次配置参考分频器、Δ-Σ调制器、电荷泵电流和偏置电路、VCO子系统等所在的寄存器,然后开始执行配置频率操作,分别向整数寄存器Reg03h和小数寄存器Reg04h写入数据N1和N2,此时频率合成器模块便输出设定频率f,从Reg12h读取锁相环锁定状态数据,将频率信息和锁定状态信息写入OLED显示寄存器。

本说明书中所述的只是本发明的较佳具体实施例,以上实施例仅用以说明本发明的技术方案而非对本发明的限制。凡本领域技术人员依本发明的构思通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在本发明的范围之内。

这篇关于树莓派python蓝牙_一种基于树莓派和Python语言的频率合成器系统的制作方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737838

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.