发新帖本帖赏金 3.00元(功能说明)我要提问
返回列表
打印
[STM32G4]

在STM32上操作SI5351时钟发生芯片

[复制链接]
2208|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 gaoyang9992006 于 2023-6-11 15:19 编辑

芯片配置的方式查看以下帖子
https://bbs.21ic.com/icview-3306594-1-1.html
假设这里我们生成好了配置代码,接下来通过cubeMX配置建立一个I2C的工程。




然后将配置头文件添加进来
#include "Si5351A-RevB-Registers.h"


并且在main开头加入SI5351A的地址宏
#define SI5351A_ADDRESS            0x60


然后就是用HAL库函数写入配置了。
比如使用以下操作存储器写入函数操作,可以一个函数里面传入内存地址与内存写入的数据,因为我们的配置并非完整的连续地址,所以我们选择一次写入一个字节数据。
 for(int8_t i=0;i<SI5351A_REVB_REG_CONFIG_NUM_REGS;i++)
{
HAL_I2C_Mem_Write( &hi2c1 , SI5351A_ADDRESS<<1 , si5351a_revb_registers[i].address ,1 ,&si5351a_revb_registers[i].value , 1 , 10 );
}

还有一种方式,通过以下函数实现,每次写入2个数据,其中第一个数据为地址,第二个数据为地址要存入的配置内容
 for(int8_t i=0;i<SI5351A_REVB_REG_CONFIG_NUM_REGS;i++)
{
        uint8_t b_dat[2];
        b_dat[0] = si5351a_revb_registers[i].address;
        b_dat[1] = si5351a_revb_registers[i].value;
        HAL_I2C_Master_Transmit( &hi2c1 , SI5351A_ADDRESS<<1 , b_dat , 2 , 10 );
}


注意,HAL库函数中关于地址的定义,是8位的,也就是如果为写操作,要在芯片7位地址后补个0,如果是读操作,要在7位地址后补个1。这里可能与其他厂家的库函数是不一致的,请注意这一点,否则你的操作将会无效。


使用特权

评论回复

打赏榜单

zhuomuniao110 打赏了 3.00 元 2023-07-28
理由:很不错的方法。

沙发
heisexingqisi| | 2023-6-11 17:38 | 只看该作者
这个芯片贵不贵

使用特权

评论回复
板凳
Jacquetry| | 2023-6-11 22:17 | 只看该作者

应该比F1系列便宜吧

使用特权

评论回复
发新帖 本帖赏金 3.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1971

主题

15978

帖子

210

粉丝