小白分享-SI4702在STM32上的调试过程分享

博主分享了初学STM32并尝试驱动Si4702收音模块的经历。在缺少例程的情况下,通过阅读数据手册,实现了模块的复位、IIC通信协议的模拟以及写入和读取数据的功能。博客提供了详细的代码实现,并附带了相关资源下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学小白,说得不对的地方欢迎大家指教,谢谢!
题外话:最近突然来了兴趣想学stm32,在某宝搞了块核心版,学习过程中又在某宝闲逛的时候看了了一个小模块,si4702收音模块,哦豁,兴奋了。可能跟工作有关吧,总想弄个收音机,以前弄过基于51的rda5820,tea5767,这回换stm32+si4702,芯片到手后照例找店家要例程,店家告诉我没有,只有一张引脚图,突然懵逼了,怎么办,硬上吧,不就是看数据手册吗,我有谷歌翻译。
正题开始了。开始了我的表演。
从店家告诉我没有例程后,我就开始了自己编写,模块引脚图如下:
引脚图
参照官方数据手册对比在这里插入图片描述
模块2脚是SDIO,10脚是SCLK,9脚这个置位使能端应该是RST,模块分析完毕,连上stm32核心版,接下来开始写程序了,怎么写?只有看数据手册了,手册上4.9 Reset, Powerup, and Powerdown介绍了怎么上电并选择2线或者3线操作模式,这模块一看就只能2线操作啊,那就先写复位,在RST上升沿时保持SDIO为低,且SCLK为高。如下:
总线模式选择

static void si4702_reset(void)  //4702复位,选择2线模式
{
   
	SI_SDIO_L;
	SI_RST_L;
	SI_SCL_H;  //手册上有句话:复位期间必须保持SCLK为高,且至少持续到第一个开始信号
	delay_ms(300);
	SI_RST_H;
	delay_ms(150);
	SI_SDIO_H;
	delay_ms(10);
}

上电了,就准备写入或者读取数据了,看时序图
时序图
时序图
有开始,ACK,结束,这不是IIC吗?不知道IIC兼容不,手册上也没有明确表示支持IIC,我也没试,就参照官方的例程写的,关于写和读,器件地址是0010000b+R/W,最后一位是读写标志位,1为读,0为写,芯片总共有16个16位的寄存器,从00H到0FH,写入是从寄存器02H开始,每次1个字节,高位在前,低位在后,直到0F低8位写完后,绕回到00H。读取顺序是从0A开始,每次1个字节,高位在前,低位在后,到0FH,再到00H。
关于写入,芯片收到开始信号后就可以连续写入,每个字节后芯片给个ACK(SDIO=0),直到收到停止信号结束。代码如下:

开始信号,u8 addr:芯片地址,u8 rw:读写标志1或0

static void si4702_start(u8 addr, u8 rw) //开始,rw读写标志,0写,1读
{
   
	signed char i;
	SI_SCL_H;
	si4702_sdio_out();
	SI_SDIO_H;
	delay_us
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值