咚咚咚————【封装驱动】Si5351A方波信号发生器发送任意[8K-160Mhz]频率程序
(使用阿波罗STM32F7开发板)
(一)效果展示
(二)源码分享
芯片SI5351A源代码下载
可以支持一下吗QAQ
SI5351A.c
/******************************************** 主控芯片:STM32F405RGT6主频168Mhz 晶体频率:HSE=8Mhz SYSCLK=168Mhz 模块型号:STM32串口初始化 通讯方式: 函数功能:Si5351时钟芯片 作者:苏夏雨 授权:未经作者允许,禁止转载 ********************************************/ #include "si5351a.h" #include "delay.h" void IICstart()//IIC总线起始信号 { SDA(1); CLK(1); SDA(0); delay_us(100); CLK(0); delay_us(100); } void IICstop()//IIC总线停止信号 { CLK(0); delay_us(100); SDA(0); delay_us(100); CLK(1); delay_us(100); SDA(1); delay_us(100); } void IICsend(u8 DATA)//IIC总线发送信数据 { u16 i; for(i=0;i<8;i++) //发送一个字节数据 { CLK(0); //拉低时钟线,准备开始给SDA赋值if((DATA&0x80)==0) {SDA(0);} else {SDA(1);} DATA<<=1; delay_us(100); CLK(1); delay_us(100); //等待从设备把数据接收完 } CLK(0); SDA(1); //释放数据线 delay_us(100); CLK(1); delay_us(100); while(i<1000){i++;}//等待从设备应答ACK CLK(0); //释放时钟线,为下次操作做准备
}
void IICsendreg(uint8_t reg, uint8_t data)
{
IICstart(); //起始信号
delay_us(200);
IICsend(0xC0); //发送设备地址+写信号
delay_us(200);
IICsend(reg); //内部寄存器地址
delay_us(200);
IICsend(data); //内部寄存器数据
delay_us(200);

最低0.47元/天 解锁文章
4233

被折叠的 条评论
为什么被折叠?



