详解si5338 si53xx 设计使用及STM32 iic驱动设计

背景

在实际项目中经常使用si5338 si53xx,进行多路时钟的倍频以生成想要的时钟信号,但是针对si5338 si53xx设计使用缺少相关的资料,本文详解si5338 si53xx 设计使用及STM32 iic驱动设计,本文使用工程在项目中得到测试,在多个项目中同时使用。这里做个详解,加速今后的项目开发。本文使用的资源如下图所示

ClockBuilderPro_project------------>> 使用ClockBuilder Pro生成的工程,及配置头文件

ClockBuilder-Pro-Installer.zip------->>ClockBuilder Pro安装文件

si5338.rar------------------------>>stm32cubeide代码工程

详解si5338 si53xx 设计使用及STM32 iic驱动设计.pdf----->>使用说明文档

详解si5338si53xx设计使用及STM32iic驱动设计全套资料原理图代码使用手册ClockBuilder设计工程资源-CSDN文库

硬件设计

这里还是先要把硬件原理图给出来,因为后面si5338 si53xx,都需要根据原理图进行参数的配置,这里可以看出输入时钟25Mhz,支持四路时钟输出,I2C_LSB管脚接地,电压电压1.8v。

连接STM32F407如下表所示:

Label

Si5338A

STM32F407

备注

STM32_1V8_I2C2_SCL

SCL

PF1

STM32_1V8_I2C2_SCL电平转3.3v后连接PF1

STM32_1V8_I2C2_SDA

SDA

PF0

STM32_1V8_I2C2_SDA电平转3.3v后连接PF0

使用ClockBuilder Pro生成寄存器配置列表

安装ClockBuilder Pro

si5338 si53xx的寄存器配置需要采用官方提供的ClockBuilder Pro,下面详述步骤,首先安装ClockBuilder Pro,如下图所示:

解压ClockBuilder-Pro-Installer.zip

双击ClockBuilder-Pro-2.45.exe,都选择默认配置,即可完成软件安装

ClockBuilder Pro有更新的版本了,这里采用ClockBuilder-Pro-2.45,读者也可以去下载最新的版本使用,基本上步骤都是一样的。

新建工程

 

输入时钟配置 

输出时钟配置

导出配置寄存器文件 

选择C头文件的格式,记得这里生成的头文件,可以直接复制到软件设计中提供侧工程,头文件。 

完成配置头文件导出

配置文件内容复制到工程

复制Si5338-RevB-Registers.h文件内容,替换如下工程中register_map.h中所有内容,编译工程即可。

软件设计

软件采用stm32cubeide,配置,使用串口1作为调试串口,波特率配置9600,参考代码

/* USER CODE BEGIN PV */#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endifPUTCHAR_PROTOTYPE
{while((USART1->SR&0x40)==0){};USART1->DR = ch;return ch;
}
/* USER CODE END PV */

 时钟采用8Mhz外部时钟倍频

仿真器采用sw接口

配置GPIO PF0 PF1为默认输出

 采用IO模拟IIC读写si53xx数据,参考代码

static void si5338_configure(void)
{uint32_t counter, timeout = 100;uint8_t curr_chip_val, clear_curr_val, clear_new_val, combined, reg;Reg_Data curr;//----------------------------------------------------------------// See Si5338 datasheet Figure 9 for more details on this procedure// delay added to wait for Si5338 to be ready to communicate // after turning on///counter = 0;///while(counter < SI5338_DELAY) { counter++; }I2C_ByteWrite(230, 0x10);                   //OEB_ALL = 1I2C_ByteWrite(241, 0xE5);                   //DIS_LOL = 1//for all the register values in the Reg_Store array//get each value and mask and apply it to the Si5338for(counter=0; counter<NUM_REGS_MAX; counter++){curr = Reg_Store[counter];if(curr.Reg_Mask != 0x00) { if(curr.Reg_Mask == 0xFF) { // do a write transaction only // since the mask is all ones			I2C_ByteWrite(curr.Reg_Addr, curr.Reg_Val);} else {		//do a read-modify-writecurr_chip_val = I2C_ByteRead(curr.Reg_Addr);clear_curr_val = curr_chip_val & ~curr.Reg_Mask;clear_new_val = curr.Reg_Val & curr.Reg_Mask;combined = clear_new_val | clear_curr_val;		I2C_ByteWrite(curr.Reg_Addr, combined);}}}// check LOS alarm for the xtal input // on IN1 and IN2 (and IN3 if necessary) - // change this mask if using inputs on IN4, IN5, IN6reg = I2C_ByteRead(218) & LOS_MASK;while(reg != 0){reg = I2C_ByteRead(218) & LOS_MASK;timeout --;//osDelay(1);delay_ms(1);if(timeout == 0){printf("si5338_configure timeout1\n");break;}					}I2C_ByteWrite(49, I2C_ByteRead(49) & 0x7F); //FCAL_OVRD_EN = 0I2C_ByteWrite(246, 2);                      //soft resetI2C_ByteWrite(241, 0x65);                   //DIS_LOL = 0// wait for Si5338 to be ready after calibration (ie, soft reset)///counter = 0;///while(counter < SI5338_DELAY) { counter++; }///counter = 0;///while(counter < SI5338_DELAY) { counter++; }//osDelay(24);delay_ms(24);//make sure the device locked by checking PLL_LOL and SYS_CALtimeout = 100;reg = I2C_ByteRead(218) & LOCK_MASK;while(reg != 0){reg = I2C_ByteRead(218) & LOCK_MASK;timeout --;//msleep(1);if(timeout == 0){printf("si5338_configure timeout2\n");break;}				}//copy FCAL valuesI2C_ByteWrite(45, I2C_ByteRead(235));I2C_ByteWrite(46, I2C_ByteRead(236));// clear bits 0 and 1 from 47 and // combine with bits 0 and 1 from 237reg = (I2C_ByteRead(47) & 0xFC) | (I2C_ByteRead(237) & 3);I2C_ByteWrite(47, reg);I2C_ByteWrite(49, I2C_ByteRead(49) | 0x80); // FCAL_OVRD_EN = 1I2C_ByteWrite(230, 0x00);                   // OEB_ALL = 0printf("si5338_configure success!\n");//------------------------------------------------------------}

测试记录

能够正确配置si5338,串口1,log打印如下图所示

使用工程及其他资料如下:

ClockBuilderPro_project------------>> 使用ClockBuilder Pro生成的工程,及配置头文件

ClockBuilder-Pro-Installer.zip------->>ClockBuilder Pro安装文件

si5338.rar------------------------>>stm32cubeide代码工程

详解si5338 si53xx 设计使用及STM32 iic驱动设计.pdf----->>使用说明文档

详解si5338si53xx设计使用及STM32iic驱动设计全套资料原理图代码使用手册ClockBuilder设计工程资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523832.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【pycharm】汉化及翻译插件

汉化插件 翻译插件 使用 选中右键翻译

通信算法之232: 无线发射功率和信号强度,常用单位dB、dBm、dBi和dBd介绍

[转载] 无线功率和信号强度的基本概念 在无线网络中&#xff0c;使用AP设备和天线来实现有线和无线信号互相转换。如下图所示&#xff1a; 有线网络侧的数据从AP设备的有线接口进入AP后&#xff0c;经AP处理为射频信号&#xff0c;从AP的发送端&#xff08;TX&#xff09;经过…

DCMM认证等级以及费用多少?

DCMM&#xff08;数据管理能力成熟度&#xff09;特别适合拥有较多数据量的组织、以及期望在初期就进行数据管理规范的组织。它旨在帮助组织对象发现自身问题&#xff0c;为数据管理能力的建设和提升指明方向。 DCMM将组织的数据管理划分为 8大能力域&#xff0c;细分为28个能…

如何将代理IP设置为ISP:详细指南

在当今互联网时代&#xff0c;代理IP已经成为许多用户保护隐私和提升网络体验的重要工具。而ISP&#xff08;Internet Service Provider&#xff09;的代理IP更是因为其高质量和稳定性备受青睐。本文将详细介绍如何将代理IP设置为ISP&#xff0c;让你在网络世界中享受更优质的上…

如何在D盘创建虚拟环境?包括安装PyTorch和配置PyCharm

摘要&#xff1a;本文首先在D盘创建了虚拟环境&#xff0c;然后在虚拟环境中安装了PyTorch&#xff0c;最后配置了pycharm的解释器。 1. 在 D 盘创建虚拟环境 打开Anaconda Prompt 输入conda info --envs查看当前已有环境 创建自己的虚拟环境&#xff0c;打算命名为py310&…

不同分辨率下页面自适应方法

首先在utils文件下新建一个js文件命名为screenSize.js 然后在需要做自适应的页面文件中引入import {screenSize} from ‘/utils/screenSize’ 最外层div中用ref命名 最后在mounted中使用该方法 记得style中给login宽1920px,高1080px

CPP继承(下)

目录 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 单继承 多继承 菱形继承 菱形继承的问题 虚继承 虚拟继承解决数据冗余和二义性的原理 继承的总结和反思 笔试面试题 继承与友元 友元关系不能继承&#xff0c;也就是说基类友元不能访问子类私有和保护…

高效易用的仓库进销存管理软件盘点,总有一款适合你!

本文将盘点10款主流的仓库进销存管理软件&#xff0c;为企业选型提供参考&#xff01; 仓库进销存管理软件就如同企业仓库的智慧大脑&#xff0c;能把企业的库存管理得井井有条。 有了它&#xff0c;首先能准确掌握库存情况&#xff0c;就像有了一双敏锐的眼睛&#xff0c;随时…

[SWPUCTF 2023 秋季新生赛]Pingpingping

这种是ctf中比较简单的一类题&#xff0c;主要解法基本上也就那些形式。 这道题我给它提出来主要是涉及了一下比较零散的知识点&#xff0c;觉得想要跟大家分享一下。 <?php highlight_file(__FILE__); error_reporting(0); $_ping $_GET[Ping_ip.exe]; if(isset($_ping…

新160个crackme -047-surre

运行分析 打开程序&#xff0c;标题显示Unreg未注册点击Try it&#xff0c;让我们选择一个文件&#xff0c;若选择文件无反应&#xff0c;不选择文件之后弹出错误提示 PE分析 Delphi程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida找到已注册字符串&#xff0…

glsl着色器学习(十)缩放

对二维图形进行缩放&#xff0c;需要用到顶点着色器&#xff0c;顶点着色器经过矩阵变换&#xff0c;会将模型空间最终转换成裁剪空间。下面就来操作矩阵 这里需要用到一个库glMatrix。 首先修改顶点着色器 <script id"vertex-shader-2d" type"x-shader/x-…

为何科技达人都爱用Windows Disk Clear?数据安全有保障!

前言 “在数字时代&#xff0c;数据即力量&#xff0c;而其安全则是力量的基石。”这句箴言恰如其分地描绘了当今社会对数据安全的迫切需求。正是在这样的科技浪潮中&#xff0c;一款名为“Windows Disk Clear”的软件如同璀璨星辰&#xff0c;照亮了数据安全领域的天空。 它…

【DSP】无法在线仿真无法进入main()函数

DSP无法在线仿真无法进入main()函数 1.问题描述 ​ 接手前人的DSP代码&#xff0c;硬件平台是DSP C6701&#xff0c;软件IDE是CCS 12.3.0。仿真器版本是XDS 560V2。 ​ 在进行在线仿真时&#xff0c;经常出现“伪在线”的情况。简单来说&#xff0c;正常的在线过程&#xff…

【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530

1. 力扣530&#xff1a;二叉搜索树的最小绝对差 1.1 题目&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,…

QT5记录 QHBoxLayout ScrollArea导致QLabel重新计算位置导致内容显示不全

先给QLabel 固定高度 # 这里让背景框适配聊天框font_metrics QFontMetrics(font)rect font_metrics.boundingRect(QRect(0, 0, self.width(), 1920), Qt.TextFlag.TextWordWrap,text)newWidth rect.width() 40if rect.width() < 800:self.setMaximumWidth(newWidth)self…

python中pip源配置

文章目录 1、前言2、pip下载源配置 1、前言 conda环境的源配置&#xff0c;相关博客有很多&#xff0c;这里不再赘述。在我使用梯子后&#xff0c;使用pip进行库安装&#xff0c;总是出现错误情况&#xff0c;如下所示&#xff1a; 2、pip下载源配置 因此&#xff0c;在这里进…

多模态:DetCLIPv3解析

文章目录 前言一、介绍二、方法2. Open vocabulary detector2.1 encoder2.2 decoder 3. Object captioner 三、数据工程1. Auto-annotation data pipeline 四、训练策略五、实验总结 前言 目前多模态目标检测逐渐成为检测领域的主要发力方向&#xff0c;从最初的检测大模型gro…

这个桌面插件真的酷!该有的都有了!改造桌面必备神器

这个桌面插件真的酷&#xff01;该有的都有了&#xff01;改造桌面必备神器。一个好用的桌面插件可以给我们提供很多的方便&#xff0c;给自己桌面打扮一下&#xff0c;定制一个自己喜欢的桌面插件&#xff0c;让桌面变得更美观实用&#xff01; 如何给桌面添加一个实用的插件&…

编译器基础介绍

随着深度学习的不断发展&#xff0c;AI 模型结构在快速演化&#xff0c;底层计算硬件技术更是层出不穷&#xff0c;对于广大开发者来说不仅要考虑如何在复杂多变的场景下有效的将算力发挥出来&#xff0c;还要应对 AI 框架的持续迭代。AI 编译器就成了应对以上问题广受关注的技…

安装破解激活pycharm

装pycharm之前先装python 激活方式版本不能过新&#xff0c;要22年1月及其之前的版本&#xff0c;下拉找到对应版本的专业版 Other Versions - PyCharmGet past releases and previous versions of PyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.下载电脑…