|
@@ -1,11 +1,18 @@
|
|
|
## 一、项目名称
|
|
|
adapterBoardDriver
|
|
|
+
|
|
|
## 二、产品类型
|
|
|
+
|
|
|
演示板
|
|
|
+
|
|
|
## 三、应用场景
|
|
|
+
|
|
|
无线数据收发、测试通讯距离
|
|
|
+
|
|
|
## 四、传感器及驱动接口
|
|
|
+
|
|
|
无
|
|
|
+
|
|
|
## 五、按键
|
|
|
6个
|
|
|
1. `S1`按键可以移动光标(选择的项会反显)向上选择设置项,或向上设置数值,可以循环移动选择
|
|
@@ -13,54 +20,74 @@ adapterBoardDriver
|
|
|
1. `S3`按键可以移动光标(选择的项会反显)向下选择设置项,或向上设置数值,可以循环移动选择
|
|
|
1. `S4`按键功能待定
|
|
|
1. `S5`按键,功能1:开机界面时,按下进入功能选择界面。功能2:确定选择项目。功能3:退出设置状态
|
|
|
+
|
|
|
## 六、LED指示灯
|
|
|
+
|
|
|
+
|
|
|
2个
|
|
|
1. `D5`蓝色LED,发送成功指示灯灯
|
|
|
2. `D4`红色LED,接收成功指示灯灯
|
|
|
+
|
|
|
## 七、显示器类型及驱动接口
|
|
|
+
|
|
|
深圳市晶联讯电子的液晶模块`JLX19296G-382-PN`
|
|
|
该液晶模块支持4线SPI串行接口和IIC接口,本项目使用IIC接口驱动,显示大小192*96 点阵
|
|
|
+
|
|
|
## 八、功耗要求
|
|
|
无
|
|
|
+
|
|
|
## 九、供电方式
|
|
|
+
|
|
|
支持三种供电
|
|
|
1. USB的MICRO-B插头供电
|
|
|
-1. 3*5号电池供电
|
|
|
-1. 2pin的PH座子供电,注意电压不能超过5V
|
|
|
+2. 3*5号电池供电
|
|
|
+3. 2pin的PH座子供电,注意电压不能超过5V
|
|
|
+
|
|
|
## 十一、尺寸
|
|
|
+
|
|
|
87mm*131.5mm
|
|
|
+
|
|
|
## 十二、射频频段
|
|
|
-433MHz、490MHz、868MHz、915MHz
|
|
|
+
|
|
|
## 十三、射频芯片方案
|
|
|
-`SX1268`、`SX1262`、`LLCC68`
|
|
|
+
|
|
|
+
|
|
|
## 十四、主控芯片方案
|
|
|
+
|
|
|
`AT32F413RCT7`该MCU与`STM32F103RCT6`软硬件兼容
|
|
|
+
|
|
|
## 十五、认证要求
|
|
|
+
|
|
|
无
|
|
|
+
|
|
|
## 十六、外部连接接口
|
|
|
+
|
|
|
1. `P7`串口转USB
|
|
|
1. `J1``J2`MCU的GPIO口
|
|
|
1. `P1`microBIT插槽,用于无线模块转接板连接
|
|
|
1. `P7`MICRO-B类型USB座子,供电
|
|
|
1. `P6`外部供电
|
|
|
1. `P5`仿真烧录接口
|
|
|
+
|
|
|
## 十七、编译器
|
|
|
+
|
|
|
`MDK-ARM Standard Version: 5.14.0.0`
|
|
|
+
|
|
|
## 十八、编程语言
|
|
|
+
|
|
|
C99标准
|
|
|
+
|
|
|
## 十九、SDK版本
|
|
|
+
|
|
|
`STM32F10x_StdPeriph_Lib_V3.5.0`
|
|
|
+
|
|
|
## 二十、功能描述
|
|
|
-<div >
|
|
|
-<img src="image/mainUi.png" height="150" width="200">
|
|
|
-<img src="image/select_tx.png" height="150" width="200">
|
|
|
-<img src="image/packettx.png" height="150" width="200">
|
|
|
-<img src="image/packetrx.png" height="150" width="200">
|
|
|
-<img src="image/continuous.png" height="150" width="200">
|
|
|
-</div>
|
|
|
+
|
|
|
|
|
|
### 数据包收发测试
|
|
|
+
|
|
|
#### 发送测试
|
|
|
+
|
|
|
`主界面`<img src="image/mainUi.png" height="60" width="85">-->按键`S5`-->功能选择`Enter RF Transmiter`<img src="image/select_tx.png" height="60" width="85">-->按键`S5`-->进入`Packet Tx`<img src="image/packetTx.png" height="60" width="85">-->按键`S5`-->开始发送,同时`START`会闪烁显示
|
|
|
发送完成后,6S内收到ACK,会立即触发重新发送,同时会重新设置重发超时时间(从开始发送到接收到ACK的时间),超时后自动重发,超时重发10次后,重发超时时间自动切换回6S。
|
|
|
发送成功`D5`蓝色LED灯闪烁一下。
|
|
@@ -70,7 +97,9 @@ C99
|
|
|
2. `100%`为统计的丢包率,重新按下按键`S5`重新计数
|
|
|
3. `hello world?`为无线收到的数据包,其中的`?`位置的字符每次都会不一样
|
|
|
4. `-004dBm`为最新一次无线收到的数据包的信号强度
|
|
|
+
|
|
|
#### 接收测试
|
|
|
+
|
|
|
`主界面`<img src="image/mainUi.png" height="60" width="85">-->按键`S5`-->功能选择`Enter RF Receiver`<img src="image/select_rx.png" height="60" width="85">-->按键`S5`-->进入`Packet Rx`<img src="image/packetRx.png" height="60" width="85">-->按键`S5`-->开始接收,同时`START`会闪烁显示
|
|
|
收到数据后`D4`红色LED灯闪烁一下
|
|
|
|
|
@@ -78,8 +107,11 @@ C99
|
|
|
1. `11.67mA`为当前无线模组的工作电流
|
|
|
1. `-13dBm`为最新一次无线收到的数据包的信号强度
|
|
|
1. `hello world2`、`hello world3`、`hello world4`为无线收到的3个数据包,收到新的数据包时显示会向上滚动
|
|
|
+
|
|
|
### 数据收发软件实现
|
|
|
+
|
|
|
#### 周期性发送流程
|
|
|
+
|
|
|
<img src='https://g.gravizo.com/svg?
|
|
|
digraph G {
|
|
|
初始化 -> 进入接收状态[style=bold,label="设置模组型号:\nmyRadio_setChipType\n初始化射频:\nmyRadio_init"];
|
|
@@ -90,7 +122,9 @@ C99
|
|
|
发送完成 -> 重新进入接收状态[style=bold,label="myRadio_receiver"];
|
|
|
}
|
|
|
'/>
|
|
|
+
|
|
|
### 功能参数设置
|
|
|
+
|
|
|
<div align="center">
|
|
|
<img src="image/setting.png" height="150" width="200">
|
|
|
</div>
|
|
@@ -108,21 +142,18 @@ C99
|
|
|
2. 本公司为了统一demo程序,将射频相关的操作重新定义了一层,详见`radio/myRadio.c`,无线应用开发,可以参考借鉴。
|
|
|
### 射频芯片驱动IO口说明
|
|
|
驱动IO口均定义在`project/board.h`中
|
|
|
- 1. BOARD_GPIO_SPI_CLK
|
|
|
- 2. BOARD_GPIO_SPI_MISO
|
|
|
- 3. BOARD_GPIO_SPI_MOSI
|
|
|
- 4. BOARD_GPIO_SPI_CSN
|
|
|
- 5. BOARD_GPIO_SPI_GPIOA -> 直连射频芯片的`RST`引脚,上电初始化需要用到
|
|
|
- 6. BOARD_GPIO_SPI_GPIOB -> 直连射频芯片的`IO1`引脚,用于接收芯片操作的中断响应输出指示,本工程该引脚用于做发送接收中断响应指示,用户可以配置中断映射功能
|
|
|
- 7. BOARD_GPIO_SPI_GPIOC -> 直连射频芯片的`IO3`引脚,用于接收芯片操作的中断响应输出指示,本工程该引脚未使用,用户可以配置中断映射功能
|
|
|
- 8. BOARD_GPIO_SPI_GPIOD -> 直连射频芯片的`busy`引脚,用于检测射频芯片工作状态是否忙状态,
|
|
|
- 9. 其他IO口未使用,可根据实际情况移植
|
|
|
+
|
|
|
+
|
|
|
### 无线应用开发注意事项
|
|
|
#### 无线频率
|
|
|
+
|
|
|
1. 避免使用中心频率为射频芯片使用的晶体频率整数倍的,比如晶体频率为32MHz,就需要避免使用`448MHz`的中心频点
|
|
|
+
|
|
|
#### 驱动调试
|
|
|
+
|
|
|
1. 首先保证SPI通讯正常,具体SPI时序需根据射频芯片要求设置,可通过示波器或者逻辑分析仪进行硬件分析
|
|
|
2. SPI通讯正常后,进一步调试查看寄存器操作,读写寄存器,若能正常操作,基本可判定移植成功了
|
|
|
+
|
|
|
#### 通讯距离
|
|
|
影响无线传输距离的因素
|
|
|
1. 无线电频谱,包括使用的无线频段和无线波特率
|
|
@@ -130,15 +161,14 @@ C99
|
|
|
3. 天线增益,不同增益的天线对无线信号的接收效果影响很大
|
|
|
4. 路径损耗,主要是包括无线使用的周围环境,比如楼宇、树木山峰遮挡
|
|
|
5. 其他的无线信号干扰
|
|
|
+
|
|
|
## 二十二、软件开发
|
|
|
### 开发注意事项
|
|
|
-* 休眠sleep
|
|
|
- sleep有两种状态:params.Fields.WarmStart = 1;和params.Fields.WarmStart = 0;
|
|
|
- `params.Fields.WarmStart = 1`:可以直接调用`Radio.Rx`和`Radio.Send`
|
|
|
- `params.Fields.WarmStart = 0`:需要重新配置初始化才能调用`Radio.Rx`和`Radio.Send`
|
|
|
+
|
|
|
### 工程文件架构
|
|
|
-### 有源温补晶体
|
|
|
-1. 电压:3.3V。@SX126xSetDio3AsTcxoCtrl( TCXO_CTRL_3_3V, RADIO_TCXO_SETUP_TIME << 6 );
|
|
|
+###
|
|
|
+
|
|
|
+
|
|
|
```c
|
|
|
..\adapterBoardDriver_xxxxxxxxxxxxxxx_Vxx
|
|
|
├──app \\常用应用模块封装
|
|
@@ -159,7 +189,9 @@ C99
|
|
|
| ├──myRadio_gpio.c \\射频驱动接口硬件初始化
|
|
|
| └──myRadio.c \\为无线应用通用封装API
|
|
|
```
|
|
|
+
|
|
|
### 无线应用通用封装API-radio/myRadio.c
|
|
|
+
|
|
|
1. **初始化**-`void myRadio_init(int agr0, void *agr1_ptr)`
|
|
|
射频芯片驱动IO口初始化-`myRadio_gpio_init()`
|
|
|
射频基本参数初始化
|
|
@@ -182,70 +214,14 @@ C99
|
|
|
外部中断检测定义在`myRadio_gpio.c`
|
|
|
14. 其他,官方未定义,属于第三方定义的常用API,不同厂家的射频方案不一定都能用
|
|
|
|
|
|
-|GDOx_CFG[5:0]| Description|
|
|
|
-|---|---|
|
|
|
-|0 (0x00) |与 RX FIFO 关联:当 RX FIFO 填充到或高于 RX FIFO 阈值时断言。当 RX FIFO 耗尽到同一阈值以下时取消断言|
|
|
|
-|1 (0x01) |与 RX FIFO 关联:当 RX FIFO 填充到或高于 RX FIFO 阈值或到达数据包末尾时断言。当 RX FIFO 为空时取消断言。|
|
|
|
-|2 (0x02) |与 TX FIFO 关联:当 TX FIFO 填充等于或高于 TX FIFO 阈值时断言。当 TX FIFO 低于同一阈值时取消断言|
|
|
|
-|3 (0x03) |与 TX FIFO 关联:当 TX FIFO 已满时断言。当 TX FIFO 耗尽到低于 TX FIFO 阈值时取消断言。|
|
|
|
-|4 (0x04) |断言 RX FIFO 何时溢出。刷新 FIFO 时取消断言。|
|
|
|
-|5 (0x05) |断言 TX FIFO 何时溢出。刷新 FIFO 时取消断言。|
|
|
|
-|6 (0x06) |在发送/接收同步字时断言,并在数据包末尾取消断言。在 RX 中,当数据包由于地址或最大长度过滤而被丢弃或无线电进入RXFIFO_OVERFLOW状态时,引脚也将取消置位。在TX 如果 TX FIFO 下溢,引脚将取消置位。|
|
|
|
-|7 (0x07) |在收到 CRC OK 的数据包时断言。从 RX FIFO 读取第一个字节时取消断言|
|
|
|
-|8 (0x08) |达到前导码质量。当 PQI 高于编程的 PQT 值时断言。当芯片重新进入 RX 状态 (MARCSTATE=0x0D) 或 PQI 低于编程的 PQT 值时取消置位|
|
|
|
-|9 (0x09) |清晰的渠道评估。当 RSSI 级别低于阈值时为高(取决于当前CCA_MODE设置)|
|
|
|
-|10 (0x0A)|锁定检测器输出。如果锁定检测器输出具有正转换或逻辑持续高电平,则PLL处于锁定状态。要检查PLL锁定,应将锁定检测器输出用作MCU的中断|
|
|
|
-|11 (0x0B)|串行时钟。以同步串行模式与数据同步。在RX模式下,当GDOx_INV=0时,CC1101在下降沿设置数据。在TX模式下,当GDOx_INV=0.|时,CC1101在串行时钟的上升沿对数据进行采样。
|
|
|
-|12 (0x0C)|串行同步数据输出。用于同步串行模式。|
|
|
|
-|13 (0x0D)|串行数据输出。用于异步串行模式。|
|
|
|
-|14 (0x0E)|载体感。如果 RSSI 级别高于阈值,则为高。进入空闲模式时清除|
|
|
|
-|15 (0x0F)|CRC_OK。最后的CRC比较匹配。进入/重新启动 RX 模式时清除。|
|
|
|
-|16 (0x10)||
|
|
|
-|到||
|
|
|
-|21 (0x15) |保留 – 用于测试|
|
|
|
-|22 (0x16) |RX_HARD_DATA[1]。可与RX_SYMBOL_TICK一起使用,用于替代串行RX输出|
|
|
|
-|23 (0x17) |RX_HARD_DATA[0].可与RX_SYMBOL_TICK一起使用,用于替代串行RX输出|
|
|
|
-|24 (0x18)||
|
|
|
-|到||
|
|
|
-|26 (0x1A) |保留 – 用于测试|
|
|
|
-|27 (0x1B) |PA_PD. 注意:PA_PD在睡眠和 TX 状态下将具有相同的信号电平。要在使用 SLEEP 状态的应用中控制外部 PA 或 RX/TX 开关,建议改用 GDOx_CFGx=0x2F|
|
|
|
-|28 (0x1C) |LNA_PD. 注意:LNA_PD在睡眠和接收状态下将具有相同的信号电平。要在使用 SLEEP 状态的应用中控制外部 LNA 或 RX/TX 开关,建议改用 GDOx_CFGx=0x2F|
|
|
|
-|29 (0x1D) |RX_SYMBOL_TICK。可与RX_HARD_DATA一起使用,用于替代串行RX输出|
|
|
|
-|30 (0x1E)||
|
|
|
-|到||
|
|
|
-|35 (0x23) 保留 – 用于测试|
|
|
|
-|36 (0x24)|WOR_EVNT0|
|
|
|
-|37 (0x25)|WOR_EVNT1|
|
|
|
-|38 (0x26)|CLK_256|
|
|
|
-|39 (0x27)|CLK_32k|
|
|
|
-|40 (0x28)|保留 – 用于测试|
|
|
|
-|41 (0x29)|CHIP_RDYn|
|
|
|
-|42 (0x2A)|保留 – 用于测试|
|
|
|
-|43 (0x2B)|XOSC_STABLE|
|
|
|
-|44 (0x2C)|保留 – 用于测试|
|
|
|
-|45 (0x2D)|保留 – 用于测试|
|
|
|
-|46 (0x2E)|高阻抗(3 态)|
|
|
|
-|47 (0x2F)|HW 为 0(通过设置 GDOx_INV=1 实现 HW1)。可用于控制外部 LNA/PA 或 RX/TX 开关|
|
|
|
-|48 (0x30)| CLK_XOSC/1 Note: There are 3 GDO pins, but only one CLK_XOSC/n can be selected as an output at any time. If CLK_XOSC/n is to be monitored on one of the GDO pins, the other two GDO pins must be configured to values less than 0x30. The GDO0 |default value is CLK_XOSC/192.To optimize RF performance, these signals should not be used while the radio is in RX or TX mode.|
|
|
|
-|49 (0x31) |CLK_XOSC/1.5|
|
|
|
-|50 (0x32) |CLK_XOSC/2|
|
|
|
-|51 (0x33) |CLK_XOSC/3|
|
|
|
-|52 (0x34) |CLK_XOSC/4|
|
|
|
-|53 (0x35) |CLK_XOSC/6|
|
|
|
-|54 (0x36) |CLK_XOSC/8|
|
|
|
-|55 (0x37) |CLK_XOSC/12|
|
|
|
-|56 (0x38) |CLK_XOSC/16|
|
|
|
-|57 (0x39) |CLK_XOSC/24|
|
|
|
-|58 (0x3A) |CLK_XOSC/32|
|
|
|
-|59 (0x3B) |CLK_XOSC/48|
|
|
|
-|60 (0x3C) |CLK_XOSC/64|
|
|
|
-|61 (0x3D) |CLK_XOSC/96|
|
|
|
-|62 (0x3E) |CLK_XOSC/128|
|
|
|
-|63 (0x3F) |CLK_XOSC/192|
|
|
|
+
|
|
|
### 版本更新
|
|
|
+
|
|
|
#### V04
|
|
|
|
|
|
+
|
|
|
## 二十三、免责说明
|
|
|
+
|
|
|
1、本工程驱动软件只提供做演示项目使用,未经过大批量项目验证,客户需谨慎使用,如果使用在正式项目中引发的所有问题,本司概不负责。使用过程若发现任何问题,可及时与本司相关人员联系。
|
|
|
2、本工程所有文件可以用于商业性项目移植,无需向本司申请。
|
|
|
|