| 硬件连接 
核心操作流程c 
 
 复制
 
 
 下载
 
 
 
 
 
 启动I2C → 发送设备地址(写) → 发送寄存器地址 → 发送数据 → 停止I2C
 
关键寄存器配置 电源控制:REG 0x00 (需开启音频输出、锁相环等)频点设置:REG 0x02~0x03 (计算参考下方公式)音量控制:REG 0x05 (通常0x00~0x0F)搜索模式:REG 0x04 (设置SEEK位) 
 
 频率计算公式(FM频段)c
 
 
 复制
 
 
 下载
 
 
 
 
 
 // 示例:设置FM 101.1 MHzfloat freq = 101.1;uint16_t f_reg = (freq - 70.0) * 20 + 0.4; // 70-108MHz范围uint8_t reg_high = f_reg >> 8;uint8_t reg_low = f_reg & 0xFF;
 
 Arduino驱动示例代码cpp
 
 
 复制
 
 
 下载
 
 
 
 
 
 #include <Wire.h>#define C9650_ADDR 0x40 // 根据实际地址修改// 向寄存器写数据void writeReg(uint8_t reg, uint8_t val) {  Wire.beginTransmission(C9650_ADDR);  Wire.write(reg);  // 寄存器地址  Wire.write(val);  // 数据  Wire.endTransmission();}// 初始化芯片void radioInit() {  // 电源开启配置 (参考数据手册)  writeReg(0x00, 0b10000001); // 开启PLL和音频输出    // 设置FM模式  writeReg(0x01, 0b00000010); // FM频段选择    // 设置音量 (最大)  writeReg(0x05, 0x0F);}// 设置FM频率void setFMFrequency(float freq) {  if (freq < 70.0) freq = 70.0;  if (freq > 108.0) freq = 108.0;    uint16_t f_reg = (uint16_t)((freq - 70.0) * 20 + 0.4);  writeReg(0x02, f_reg >> 8);     // 高8位  writeReg(0x03, f_reg & 0xFF);   // 低8位    // 触发调谐  writeReg(0x04, 0b00010000);     // SEEK=1开始搜索  delay(100);  writeReg(0x04, 0);              // 清除SEEK}void setup() {  Wire.begin();  radioInit();  setFMFrequency(101.1); // 设置初始频率}void loop() {  // 可添加按键扫描/频率切换逻辑}
 
 |