本帖最后由 lyyinhe_xi 于 2025-2-12 16:22 编辑

FR3068x-C是一款功能强大、低功耗的无线通信芯片,适用于多种物联网和智能家居应用。其多协议支持、高性能处理器和丰富的外设接口使其成为开发者的理想选择。


这次获得的是FR3068-E-C开发板,此系列芯片是低功耗,高安全性的高性能无线 MCU,内置了蓝牙 BR/EDR/BLE 的收发器和控制器,以及 CAN FD 总线控制器,非常适合应用在工业和汽车电子等广泛领域。


FR3068E-C芯片架构属于双核架构,包括一颗独立的蓝牙核做蓝牙通讯以及另外一颗主核MCU,双核之间通过串口做HCI通讯,蓝牙核一般不对外开放,用户无需关注。 内置128KB CRAM+512KB SRAM,2MB flash(根据芯片型号有不同大小配置)。 需外挂24MHZ晶体时钟,系统主频最高可倍频至156MHz,支持两路CAN总线,支持CAN FD.


这块FR3068测试板卡中引出了:

两个2*18的排针

一块4.3寸480*272分辨率 RGB接口TFT屏

USB转串口(PB4-RX,PB5-TX)

J-Link的调试接口(PB10-SWCLK, PB11-SWDIO)

PCB 天线

3 个用户按键、 1 个复位按键

SD 卡槽,支持 SDIO3.0/eMMC 4.5.1

USB OTG

音频PA 外接SPK

麦克风

支持 CAN-FD

支持 RS485

支持 RS232

支持外扩Nor flash或者 Nand flash

支持外接pSRAM

布局与端口:


通过https://www.freqchip.com/sjds下载开发板的资料包,内含烧录工具、开发文档、串口驱动、SDK:


国产芯片提供的文档都是中文的,非常友好。


富芮坤官方提供了一整套的sdk,其中包含了丰富的例程。这里我们拿出产例程做个演示,这里要说一下,例程都是mdk打开,官方提供了专门的下载工具,可以直接把Bin文件下载到芯片中,无需安装直接打开。


这次参与评测的项目是FR3068x-C开发检测环境温湿度并通过手机App读取、控制风扇开关,实现远程的环境检测控制。

以下是基于FR3068x-C芯片的开发方案,包括硬件连接说明和程序实现思路。

硬件连接说明

1. 所需硬件

FR3068x-C开发板

温湿度传感器(如DHT11或DHT22)

风扇模块(5V直流风扇,带MOS管控制)

手机(支持蓝牙功能)

电源(5V供电)

电阻、电容等基础元件

2. 硬件连接

温湿度传感器连接:

DHT11/DHT22的VCC引脚 → FR3068x-C的3.3V电源

DHT11/DHT22的GND引脚 → FR3068x-C的GND

DHT11/DHT22的DATA引脚 → FR3068x-C的GPIO引脚(如GPIO1)

风扇模块连接:

风扇正极 → 5V电源

风扇负极 → MOS管的D极

MOS管的G极 → FR3068x-C的GPIO引脚(如GPIO2)

MOS管的S极 → GND

电源连接:

FR3068x-C的VCC → 3.3V电源

FR3068x-C的GND → 电源GND

程序实现思路

1. 开发环境

使用FR3068x-C的SDK开发包

开发工具:Keil或IAR

编程语言:C语言

2. 程序框架

初始化:

初始化蓝牙协议栈

初始化GPIO(用于温湿度传感器和风扇控制)

初始化定时器(用于定时读取温湿度数据)

温湿度读取:

通过GPIO读取DHT11/DHT22的数据

解析温湿度数据并存储

蓝牙通信:

实现蓝牙GATT服务,提供温湿度数据和风扇控制接口

定义特征值:

温湿度数据(只读)

风扇控制(可写)

手机App交互:

手机App通过蓝牙连接FR3068x-C

读取温湿度数据

发送控制指令(如开关风扇)

代码示例

1. 温湿度读取

c

复制

#include "dht11.h"  // DHT11驱动库

void read_temperature_humidity() {

float temperature, humidity;

if (dht11_read(&temperature, &humidity) {

printf("Temperature: %.1f°C, Humidity: %.1f%%\n", temperature, humidity);

} else {

printf("Failed to read DHT11 data.\n");

}

}

2. 风扇控制

c

复制

#define FAN_GPIO GPIO2

void fan_on() {

gpio_set_level(FAN_GPIO, 1);  // 打开风扇

}

void fan_off() {

gpio_set_level(FAN_GPIO, 0);  // 关闭风扇

}

3. 蓝牙服务

c

复制

#include "ble_service.h"  // 蓝牙服务库

// 温湿度数据特征值

uint8_t temp_humidity_data[4];  // 2字节温度 + 2字节湿度

// 风扇控制特征值

uint8_t fan_control = 0;

void ble_service_init() {

// 初始化GATT服务

ble_gatt_init();

// 添加温湿度特征值

ble_gatt_add_characteristic(temp_humidity_data, sizeof(temp_humidity_data), BLE_CHAR_READ);

// 添加风扇控制特征值

ble_gatt_add_characteristic(&fan_control, sizeof(fan_control), BLE_CHAR_WRITE);

}

void ble_service_update() {

// 更新温湿度数据

temp_humidity_data[0] = (uint8_t)temperature;

temp_humidity_data[1] = (uint8_t)(temperature * 10) % 10;

temp_humidity_data[2] = (uint8_t)humidity;

temp_humidity_data[3] = (uint8_t)(humidity * 10) % 10;

// 处理风扇控制

if (fan_control == 1) {

fan_on();

} else {

fan_off();

}

}

4. 主程序

c

复制

int main() {

// 初始化硬件

gpio_init();

dht11_init();

ble_service_init();

while (1) {

// 读取温湿度

read_temperature_humidity();

// 更新蓝牙服务

ble_service_update();

// 延时1秒

delay_ms(1000);

}

}

手机App实现

开发工具:

Android:Android Studio(Java/Kotlin)

iOS:Xcode(Swift/Objective-C)

功能实现:

扫描并连接FR3068x-C设备

读取温湿度特征值

写入风扇控制特征值

示例代码(Android):

java

复制

// 蓝牙连接与数据读取

BluetoothGattCharacteristic tempHumidityChar = gattService.getCharacteristic(TEMP_HUMIDITY_UUID);

BluetoothGattCharacteristic fanControlChar = gattService.getCharacteristic(FAN_CONTROL_UUID);

// 读取温湿度

gatt.readCharacteristic(tempHumidityChar);

// 控制风扇

fanControlChar.setValue(new byte[]{1});  // 打开风扇

gatt.writeCharacteristic(fanControlChar);

总结

通过FR3068x-C芯片,结合温湿度传感器和风扇模块,可以实现环境监测与控制的物联网应用。手机App通过蓝牙与设备通信,实时读取数据并发送控制指令。以上代码和硬件连接说明为基本实现方案,可根据具体需求进一步优化和扩展。