Files
arcs/arcs-sdk/samples/drivers/devices/Devices_Samples_Spec.md
2026-08-13 16:50:52 +08:00

11 KiB
Raw Permalink Blame History

ARCS SDK 设备驱动示例文档编写规范

本文档定义了 ARCS SDK 中设备驱动示例的 README.md 编写规范,确保所有示例文档风格统一、信息完整。


文档结构规范

必需章节(按顺序)

1. 标题H1

格式: # LISA_{DRIVER} {功能描述}示例{(可选附加说明)}

示例:

# LISA UART 同步接收示例DMA 模式 + 循环缓冲区)
# LISA PWM 基础输出示例
# LISA GPIO 中断示例

规则:

  • 使用驱动名称大写(如 UART、PWM、GPIO
  • 功能描述简洁明了(如:同步接收、异步发送、基础输出)
  • 可选附加说明用括号注明特殊模式或特性DMA 模式、中断模式)

2. 功能说明H2

格式: ## 功能说明

内容要求:

  • 第一段简明扼要地说明示例的核心功能1-2 句话)
  • 第二段(可选):补充底层实现细节或技术特点

示例:

## 功能说明

演示在 DMA 模式下使用 UART 异步发送接口,通过事件回调接收发送完成通知。

底层使用中断方式异步发送,通过信号量实现同步等待,避免轮询,降低 CPU 占用。

3. 新特性H3可选但推荐

格式: ### 新特性

使用场景:

  • 示例展示高级功能(如 DMA、中断、循环缓冲区等
  • 与基础示例有明显技术差异
  • 需要突出技术优势

内容要求:

  • 使用无序列表bullet points
  • 每项包含粗体标题和简短说明
  • 3-5 个关键特性

示例:

### 新特性

- **DMA 硬件传输**:无需 CPU 参与数据搬移,降低 CPU 占用
- **异步非阻塞**调用后立即返回DMA 后台传输
- **事件回调通知**:传输完成后通过中断回调通知应用层
- **适合高速率场景**:支持高波特率连续发送,不阻塞主任务

4. 硬件连接H2

格式: ## 硬件连接

内容要求:

  • 使用无序列表列出所有相关引脚
  • 格式:- **引脚编号**: 功能说明
  • 如果无需外部连接,明确说明

示例:

## 硬件连接

- **PB2**: UART1 TX发送
- **PB3**: UART1 RX接收

连接到 PC 串口工具,配置为 **115200, 8N1, 无流控**
## 硬件连接

无需外部连接RTC 为芯片内部外设。

5. 使用场景H2可选但推荐

格式: ## 使用场景

使用时机:

  • 示例有明确的应用场景
  • 需要说明何时选择该示例方案

内容要求:

  • 1-2 句话说明适用场景
  • 突出技术选型的关键因素

示例:

## 使用场景

适用于需要高速率连续发送数据的场景,底层采用 DMA 硬件传输CPU 占用更低,应用层通过回调确认发送完成。

6. 示例步骤H2

格式: ## 示例步骤## 示例内容

内容要求:

  • 使用有序列表(编号列表)
  • 每步简洁明了,突出关键操作
  • 3-6 个步骤为宜

示例:

## 示例步骤

1. 创建信号量(用于同步 DMA 回调)
2. 获取 UART 设备
3. 配置引脚和参数DMA 模式)
4. 设置事件回调函数(接收 TX_DONE 事件)
5. 调用 `lisa_uart_write_async()` 异步发送
6. 等待信号量确认发送完成

7. 编译运行H2

格式: ## 编译运行

内容要求:

  • 使用代码块展示编译命令
  • 标准命令为 ./build.sh -C -DBOARD=arcs_evb
  • 如有特殊需求可添加说明

示例:

## 编译运行

\`\`\`bash
./build.sh -C -DBOARD=arcs_evb
\`\`\`

8. 预期输出H2

格式: ## 预期输出

内容要求:

  • 分段展示不同输出源终端、串口工具、LED等
  • 使用代码块展示实际输出
  • 使用粗体标注输出源

示例:

## 预期输出

**终端输出:**
\`\`\`
=== LISA UART async send (DMA mode) example ===
UART ready, start sending...
Sent: Hello UART! Counter: 0
Sent: Hello UART! Counter: 1
...
\`\`\`

**PC 串口工具接收:**
\`\`\`
Hello UART! Counter: 0
Hello UART! Counter: 1
...
\`\`\`

9. 核心 APIH2可选但推荐

格式: ## 核心 API

内容要求:

  • 使用表格列出关键 API
  • 两列API 名称 | 功能说明
  • 按调用顺序排列

示例:

## 核心 API

| API | 说明 |
|-----|------|
| `lisa_device_get()` | 获取 UART 设备 |
| `lisa_uart_configure()` | 配置 UART 参数 |
| `lisa_uart_set_callback()` | 设置事件回调函数 |
| `lisa_uart_write_async()` | 异步发送数据(非阻塞) |

可选章节(根据需要添加)

10. API/功能详细说明H2

使用场景:

  • 示例涉及复杂 API 或特殊工作机制
  • 需要解释底层实现原理

命名规范:

  • ## 同步接收说明
  • ## 异步发送说明
  • ## 中断模式说明

内容要求:

  • 说明工作原理
  • 列出关键行为特点(使用无序列表)
  • 说明返回值/返回条件

示例:

## 异步发送说明

`lisa_uart_write_async()` 在 DMA 模式下的工作原理:
- **底层实现**DMA 硬件自动搬移数据到 UART 发送 FIFOCPU 无需参与
- **返回时机**:调用后立即返回,不等待发送完成
- **回调触发**DMA 传输完成后触发 `LISA_UART_EVENT_TX_DONE` 事件
- **返回值**
  - 成功时返回实际发送字节数(> 0
  - 失败时返回负数错误码

11. 关键代码H2

格式: ## 关键代码

使用场景:

  • 示例有重要代码片段需要特别说明
  • 代码包含关键配置或特殊技巧

内容要求:

  • 使用 C 语言代码块
  • 添加关键注释
  • 突出核心配置和 API 调用

示例:

## 关键代码

\`\`\`c
/* DMA 模式需要使用 32 字节对齐的内存 */
char msg[64] __attribute__((aligned(32)));

/* 配置 UART (115200, 8N1, DMA 模式) */
lisa_uart_config_t config = LISA_UART_CONFIG_DMA();
lisa_uart_configure(uart_dev, &config);

/* 设置事件回调 */
lisa_uart_set_callback(uart_dev, uart_event_callback, NULL);

/* 异步发送数据 */
int ret = lisa_uart_write_async(uart_dev, (uint8_t *)msg, strlen(msg));
\`\`\`

12. 配置说明H2

使用场景:

  • 示例涉及重要配置参数
  • 配置有特殊要求或限制

命名规范:

  • ## 参数说明
  • ## 配置说明
  • ## DMA 配置说明
  • ## 循环缓冲区配置说明

内容要求:

  • 使用 H3 小标题分段说明
  • 使用无序列表说明配置项

示例:

## DMA 配置说明

### 内存对齐要求
- **要求**DMA 模式下发送缓冲区必须 **32 字节对齐**
- **实现**:使用 `__attribute__((aligned(32)))` 属性
- **原因**DMA 控制器对内存地址有对齐要求

### 配置宏说明
- **`LISA_UART_CONFIG_DMA()`**:自动配置 DMA 模式,包括:
  - `tx_dma_enable = true`:使能 TX DMA
  - `rx_dma_enable = true`:使能 RX DMA
  - 其他参数使用默认值115200, 8N1

13. 验证方法H2

使用场景:

  • 输出不是直接通过日志可见
  • 需要外部工具或设备验证

内容要求:

  • 使用 H3 小标题区分不同验证方法
  • 提供详细的验证步骤

示例:

## 验证方法

### 方法 1: LED 验证
- 连接 LED带限流电阻到 PA20 引脚
- LED 应以中等亮度持续点亮50% 占空比)

### 方法 2: 示波器验证
- 连接示波器探头到 PA20 引脚
- 观察波形应为:
  - 频率5000 Hz (5 kHz)
  - 占空比50%

14. 注意事项H2

格式: ## 注意事项

使用场景:

  • 有重要的使用限制或约束
  • 常见错误或易忽略的细节
  • 安全或性能相关的提醒

内容要求:

  • 使用有序列表
  • 每项包含粗体关键词和详细说明
  • 3-5 项为宜

示例:

## 注意事项

1. **内存对齐**DMA 模式必须使用 32 字节对齐的发送缓冲区
2. **缓冲区生命周期**:发送完成前不能释放或修改发送缓冲区内容
3. **回调上下文**:回调函数在中断上下文中执行,应尽快返回,不要执行耗时操作
4. **超时处理**:建议设置合理的信号量超时时间,避免永久等待
5. **并发控制**:如需连续发送,应等待上一次发送完成后再发起下一次发送

文档编写通用规则

1. 语言风格

  • 简洁明了:避免冗长描述,直击重点
  • 技术准确:使用准确的技术术语
  • 一致性:同一概念在文档中保持术语统一

2. 格式规范

  • 中英文混排:中英文之间无需空格(除非是完整英文句子)
  • 代码标注API 名称、变量名使用反引号标注(如 lisa_uart_configure()
  • 强调:关键概念或数值使用粗体(如 32 字节对齐
  • 列表缩进:子列表使用 2 空格缩进

3. 代码块

  • 语言标注代码块指定语言c、bash 等)
  • 注释:关键代码添加简洁注释
  • 完整性:代码片段应能独立理解,避免断章取义

4. 专业术语

常用术语标准表达:

  • DMA 模式(不是 dma 模式)
  • 中断模式(不是 INT 模式)
  • 同步/异步(不是 sync/async除非在代码中
  • 循环缓冲区(不是环形缓冲区)
  • Ping-Pong 缓冲区(保持英文)
  • CPU 占用(不是 cpu 占用)

文档模板

基础示例模板

# LISA {DRIVER} {功能}示例

## 功能说明

{简要说明示例的核心功能}

## 硬件连接

- **引脚**: 功能说明

## 示例内容

1. 步骤1
2. 步骤2
3. 步骤3

## 编译运行

\`\`\`bash
./build.sh -C -DBOARD=arcs_evb
\`\`\`

## 预期输出

\`\`\`
输出内容
\`\`\`

高级示例模板

# LISA {DRIVER} {功能}示例({模式/特性说明}

## 功能说明

{简要说明示例的核心功能}

### 新特性

- **特性1**:说明
- **特性2**:说明
- **特性3**:说明

## 硬件连接

- **引脚**: 功能说明

## 使用场景

{说明适用场景和技术选型考虑}

## 示例步骤

1. 步骤1
2. 步骤2
3. 步骤3

## 编译运行

\`\`\`bash
./build.sh -C -DBOARD=arcs_evb
\`\`\`

## 预期输出

**终端输出:**
\`\`\`
输出内容
\`\`\`

## 核心 API

| API | 说明 |
|-----|------|
| `api_name()` | 功能说明 |

## {功能}说明

{详细说明工作原理和关键特性}

## 关键代码

\`\`\`c
/* 代码示例 */
\`\`\`

## 配置说明

### 配置项1
- 说明

### 配置项2
- 说明

## 注意事项

1. **关键点1**:说明
2. **关键点2**:说明

文档审查清单

在发布示例文档前,请确认以下项目:

  • 标题格式符合规范
  • 功能说明简洁明了
  • 硬件连接信息完整准确
  • 示例步骤清晰有序
  • 预期输出与实际代码一致
  • API 名称使用反引号标注
  • 代码块指定了语言类型
  • 术语表达统一准确
  • 配置参数说明完整
  • 注意事项涵盖关键限制
  • 无拼写或格式错误
  • 文档与实际代码完全匹配

版本历史

版本 日期 说明
1.0 2025-01-25 初始版本

维护者: ARCS SDK 团队 最后更新: 2025-01-25