看了许多文章,大多都是用的商家提供的代码修改的,虽然代码很全面,但我只是想接收一下FM听一下。就是那种几行代码就能解决,这里我记录一下我使用的代码,我是在Linux下用的i2c-tool,直接就能扫描i2c设备地址,直接发送接收数据,还是挺方便的。
接线:
RDA5807
TEA5767
首先还是贴出我参考的文章吧,想学习的可以去原文章看看
TEA5767:使用TEA5767和stm32制作一台数字FM收音机-CSDN博客
RDA5807:测试RDA5807收音机模块_rda5807m收音机电路图-CSDN博客
然后直接贴出我的脚本
TEA5767
i2cset -y 0 0x60 0x29 0xf3 0xc0 0x17 0x00 i
#-y 是没有询问,直接执行
#0是连接的i2c通道,例如i2c-0
#0x60 就是通过i2cdectect -y 0搜索出来的设备地址
#后面的一串就是数据了,i代表是一串连续数据
这里设置的是88.2MHz,要修改的话可以按下面的计算
(88.2*10^6-225000)*4/32768 = 10739 = 0x29f3
然后把0x29 0xf3 替换为新的频率,重新发一遍就行
如果用的stm32,发送地址就是0XC0,然后数据就是原本0x60后面的(不含i)
初始化并设置频率为88.2MHz数据波形
RDA5807
i2cset -y 0 0x10 0xc1 0x03 0x00 0x00 0x0a 0x00 0x88 0x0f 0x00 0x00 0x42 0x02 i
i2cset -y 0 0x10 0xc0 0x01 0x02 0x90 i
#第一句就是初始化配置,0x10是地址(i2cset发送的地址,STM32发送是0x20)
#第二句是设置频率为88MHz的(后两个数据 0x02 0x90)
频率计算
第一位:((频率-87)x10)>>2
第二位:((((频率-87)x10)&3)<<6)|0x10
初始化后修改频率就只需要发后面那一句就行,吧后面两个替换位自己需要的频率,STM32也是一样的,只是地址换为0x20
初始化波形
设置频率为88MHz