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通过蓝牙与设备通信,实时读取数据并发送控制指令。以上代码和硬件连接说明为基本实现方案,可根据具体需求进一步优化和扩展。