[update] update doc&errata

This commit is contained in:
jzlv 2021-06-07 19:02:53 +08:00
parent ee8ed272aa
commit 322bbbe17e
230 changed files with 3248 additions and 24793 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before After
Before After

View file

@ -0,0 +1,709 @@
.. _ble-index:
BLE
==================
概述
------
- BLE支持的特性
+ 蓝牙HOST特性
- GAP支持的角色Peripheral与CentralObserver与Broadcaster
- GATT支持的角色Server与Client
- 支持配对包括蓝牙4.2中的安全连接特性
- 支持永久存储蓝牙特定的设置和数据
+ 蓝牙mesh特性
- 支持Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy角色
- 支持两种Provisioning bearers(PB-ADV & PB-GATT)
- BLE协议栈的架构
.. figure:: img/image1.png
+ 总共有3个主要层共同构成了一个完整的蓝牙低能耗协议栈
- Host这一层位于应用程序之下,由多个(非实时)网络和传输协议组成,使应用程序能够以标准和互操作的方式与对等设备通信。
- Controller控制器实现了链路层(LE LL)这是一种低层次的实时协议它与无线电硬件一起提供了空中通信的标准互操作。LL处理包的接收和传输保证数据的传递并处理所有LL控制程序。
- Radio Hardware实现所需的模拟和数字基带功能块允许链路层固件在频谱的2.4GHz波段发送和接收。
- 主控Host
.. figure:: img/image2.png
* 蓝牙Host层实现了所有高级协议和配置文件最重要的是它为应用程序提供了高级API
- HCI:Host与controller接口
- L2CAP:逻辑链路控制和适应协议
- GATT:通用属性配置层Generic Attribute Profile
- GAP:通用访问配置层Generic Access Profile
- SMP:安全管理器配置层Security Manager Specification
- 应用Application
* 应用层是用户开发实际蓝牙应用的地方,包含必要的协议栈参数设置,以及各种功能函数的调用。我们分别从蓝牙从机和蓝牙主机两种设备来分析。
* 蓝牙从机
- 相关硬件和基础服务初始化
- 设置广播参数:广播数据,广播间隔,扫描回应等参数或者数据
- 设置Profile添加从机服务、特征值还有设置回调函数用于接收主机数据等
- 设置配对参数(可选)
- 启动广播,开始运行
- 等待相关事件,及事件处理,例如收到主机发来的数据,被链接等等
* 蓝牙主机
- 相关硬件和基础服务初始化
- 设置扫描参数
- 设置连接参数
- 设置配对参数(可选)
- 启动协议栈,开始运行
- 等待相关事件及事件处理例如扫描事件从机的Notify事件等等。
API参考
----------
- API介绍
``void ble_controller_init(uint8_t task_priority)``
::
/**
* function controller层初始化
* @param[in] task_priority 任务优先级
* @return 空
*/
``int hci_driver_init(void)``
::
/**
* function HCI接口驱动初始化
* @param[in] 空
* @return 0:成功,!=0:失败
*/
``int bt_enable(bt_ready_cb_t cb)``
::
/**
* function Ble使能
* @param[in] cb如果成功调用回调函数
* @return 0:成功,!=0:失败
*/
``int bt_le_adv_start(const struct bt_le_adv_param *param,const struct bt_data *ad, size_t ad_len,``
``const struct bt_data *sd, size_t sd_len)``
::
/**
* function 开启BLE广播
*
* @param[in] param: 指向广播配置参数指针
* @param[in] ad: 指向广播包中数据指针
* @param[in] ad_len: 广播包中数据的长度
* @param[in] sd: 指向扫描响应包数据指针
* @param[in] sd_len: 扫描响应包数据的长度
* @return 0:成功,!=0:失败
*/
``int bt_le_adv_update_data(const struct bt_data *ad, size_t ad_len,const struct bt_data *sd, size_t sd_len)``
::
/**
* function 更新BLE广播数据
* @param[in] ad: 指向广播包中数据指针
* @param[in] ad_len: 广播包中数据的长度
* @param[in] sd: 指向扫描响应包数据指针
* @param[in] sd_len: 扫描响应包数据的长度
* @return 0:成功,!=0:失败
*/
``int bt_le_adv_stop(void)``
::
/**
* function 停止BLE广播
* @param[in] 空
* @return 0:成功,!=0:失败
*/
``int bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb)``
::
/**
* function 开启BLE扫描
* @param[in] param: 指向扫描参数的指针
* @param[in] cb: 扫描回调函数
* @return 0:成功,!=0:失败
*/
``int bt_le_scan_stop(void)``
::
/**
* function 停止BLE扫描
* @param[in] 空
* @return 0:成功,!=0:失败
*/
``int bt_le_whitelist_add(const bt_addr_le_t *addr)``
::
/**
* function 通过地址添加设备到白名单列表中
* @param[in] addr:指向需要添加设备地址的指针
* @return 0:成功,!=0:失败
*/
``int bt_le_whitelist_rem(const bt_addr_le_t *addr)``
::
/**
* function 从白名单列表中移除设备
* @param[in] addr:指向需要移除设备地址的指针
* @return 0:成功,!=0:失败
*/
``int bt_le_whitelist_clear(void)``
::
/**
* function 清除白名单列表
* @param[in] 空
* @return 0:成功,!=0:失败
*/
``int bt_le_set_chan_map(u8_t chan_map[5])``
::
/**
* function 设置(LE)通道映射
* @param[in] chan_map通道数组
* @return 0:成功,!=0:失败
*/
``int bt_unpair(u8_t id, const bt_addr_le_t *addr)``
::
/**
* function 清除配对信息
* @param[in] id 本地标识(大多只是默认的BT ID)
* @param[in] addr 远端设备地址NULL或者BT_ADDR_LE_ANY清除所有远端设备
* @return 0:成功,!=0:失败
*/
``int bt_conn_get_info(const struct bt_conn *conn, struct bt_conn_info *info)``
::
/**
* function 获取当前连接设备的信息
* @param[in] conn 指向当前连接的指针
* @param[in] info 指向当前连接设备信息的指针
* @return 0:成功,!=0:失败
*/
``int bt_conn_get_remote_dev_info(struct bt_conn_info *info)``
::
/**
* function 获取已连接设备的信息
* @param[in] info 指向当前连接设备信息的指针
* @return 已连接设备的个数
*/
``int bt_conn_le_param_update(struct bt_conn *conn,const struct bt_le_conn_param *param)``
::
/**
* function 更新连接参数
* @param[in] conn 指向当前连接的指针
* @param[in] param 指向连接参数的指针
* @return 0:成功,!=0:失败
*/
``int bt_conn_disconnect(struct bt_conn *conn, u8_t reason)``
::
/**
* function 断开当前连接
* @param[in] conn 指向当前连接的指针
* @param[in] reason断开当前连接的原因
* @return 0:成功,!=0:失败
*/
``struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer,const struct bt_le_conn_param *param)``
::
/**
* function 创建连接
* @param[in] peer 需要连接设备地址的指针
* @param[in] param 指向连接参数指针
* @return 成功:有效的连接对象,否则失败
*/
``int bt_conn_create_auto_le(const struct bt_le_conn_param *param)``
::
/**
* function 自动创建连接白名单列表中的设备
* @param[in] param 指向连接参数指针
* @return 0:成功,!=0:失败
*/
``int bt_conn_create_auto_stop(void)``
::
/**
* function 停止自动创建连接白名单列表中的设备
* @param[in] 空
* @return 0:成功,!=0:失败
*/
``int bt_le_set_auto_conn(const bt_addr_le_t *addr,const struct bt_le_conn_param *param)``
::
/**
* function 自动创建连接远端设备
* @param[in] addr 远端设备地址指针
* @param[in] param 指向连接参数指针
* @return 0:成功,!=0:失败
*/
``struct bt_conn *bt_conn_create_slave_le(const bt_addr_le_t *peer,const struct bt_le_adv_param *param)``
::
/**
* function 发起定向的广播包给远端设备
* @param[in] peer 远端设备地址指针
* @param[in] param 指向广播参数的指针
* @return 成功:有效的连接对象,否则失败
*/
``int bt_conn_set_security(struct bt_conn *conn, bt_security_t sec)``
::
/**
* function 设置连接安全等级
* @param[in] conn 指向连接对象的指针
* @param[in] sec 安全等级
* @return 0:成功,!=0:失败
*/
``bt_security_t bt_conn_get_security(struct bt_conn *conn)``
::
/**
* function 获取当前连接的安全等级
* @param[in] conn 指向连接对象的指针
* @return 安全级别
*/
``u8_t bt_conn_enc_key_size(struct bt_conn *conn)``
::
/**
* function 获取当前连接的加密key的大小
* @param[in] conn 指向连接对象的指针
* @return 加密key的大小
*/
``void bt_conn_cb_register(struct bt_conn_cb *cb)``
::
/**
* function 注册连接回调函数
* @param[in] cb 连接回调函数
* @return 空
*/
``void bt_set_bondable(bool enable)``
::
/**
* function 设置/清除SMP配对请求/响应数据认证需求中的绑定标志
* @param[in] enable 1使能0不使能
* @return 空
*/
``int bt_conn_auth_cb_register(const struct bt_conn_auth_cb *cb)``
::
/**
* function 注册认证回调函数
* @param[in] cb 回调函数指针
* @return 0:成功,!=0:失败
*/
``int bt_conn_auth_passkey_entry(struct bt_conn *conn, unsigned int passkey)``
::
/**
* function 用密钥回复对方
* @param[in] conn 连接对象指针
* @param[in] passkey 输入的密钥
* @return 0:成功,!=0:失败
*/
``int bt_conn_auth_cancel(struct bt_conn *conn)``
::
/**
* function 取消认证过程
* @param[in] conn 连接对象指针
* @return 0:成功,!=0:失败
*/
``int bt_conn_auth_passkey_confirm(struct bt_conn *conn)``
::
/**
* function 如果密码匹配,回复对方
* @param[in] conn 连接对象的指针
* @return 0:成功,!=0:失败
*/
``int bt_conn_auth_pincode_entry(struct bt_conn *conn, const char *pin)``
::
/**
* function 用PIN码进行回复对方
* @param[in] conn 连接对象的指针
* @param[in] pin PIN码的指针
* @return 0:成功,!=0:失败
*/
``int bt_le_read_rssi(u16_t handle,int8_t *rssi)``
::
/**
* function 读取对方RSSI值
* @param[in] handle连接的句柄值
* @param[in] rssi rssi的指针
* @return 0:成功,!=0:失败
*/
``int bt_get_local_address(bt_addr_le_t *adv_addr)``
::
/**
* function 读取本机的地址
* @param[in] adv_addr 指向地址的指针
* @return 0:成功,!=0:失败
*/
``int bt_set_tx_pwr(int8_t power)``
::
/**
* function 设置本机发射功率
* @param[in] power 功率值
* @return 0:成功,!=0:失败
*/
数据结构参考
---------------
``bt_le_adv_param``\ 数据结构:
.. code:: c
/** LE Advertising Parameters. */
struct bt_le_adv_param {
/** Local identity */
u8_t id;
/** Bit-field of advertising options */
u8_t options;
/** Minimum Advertising Interval (N * 0.625) */
u16_t interval_min;
/** Maximum Advertising Interval (N * 0.625) */
u16_t interval_max;
#if defined(CONFIG_BT_STACK_PTS)
u8_t addr_type;
#endif
};
此数据结构用来配置广播参数包括本地识别id、广播选项位域、广播间隙等其中广播选项位域有如下枚举类型参数可选:
.. code:: c
enum {
/** Convenience value when no options are specified. */
BT_LE_ADV_OPT_NONE = 0,
/** Advertise as connectable. Type of advertising is determined by
* providing SCAN_RSP data and/or enabling local privacy support.
*/
BT_LE_ADV_OPT_CONNECTABLE = BIT(0),
/** Don't try to resume connectable advertising after a connection.
* This option is only meaningful when used together with
* BT_LE_ADV_OPT_CONNECTABLE. If set the advertising will be stopped
* when bt_le_adv_stop() is called or when an incoming (slave)
* connection happens. If this option is not set the stack will
* take care of keeping advertising enabled even as connections
* occur.
*/
BT_LE_ADV_OPT_ONE_TIME = BIT(1),
/** Advertise using the identity address as the own address.
* @warning This will compromise the privacy of the device, so care
* must be taken when using this option.
*/
BT_LE_ADV_OPT_USE_IDENTITY = BIT(2),
/** Advertise using GAP device name */
BT_LE_ADV_OPT_USE_NAME = BIT(3),
/** Use low duty directed advertising mode, otherwise high duty mode
* will be used. This option is only effective when used with
* bt_conn_create_slave_le().
*/
BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY = BIT(4),
/** Enable use of Resolvable Private Address (RPA) as the target address
* in directed advertisements when CONFIG_BT_PRIVACY is not enabled.
* This is required if the remote device is privacy-enabled and
* supports address resolution of the target address in directed
* advertisement.
* It is the responsibility of the application to check that the remote
* device supports address resolution of directed advertisements by
* reading its Central Address Resolution characteristic.
*/
BT_LE_ADV_OPT_DIR_ADDR_RPA = BIT(5),
/** Use whitelist to filter devices that can request scan response
* data.
*/
BT_LE_ADV_OPT_FILTER_SCAN_REQ = BIT(6),
/** Use whitelist to filter devices that can connect. */
BT_LE_ADV_OPT_FILTER_CONN = BIT(7),
};
如果需要发送一个广播包,配置可以如下:
.. code:: c
param.id = 0;
param.options = (BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_NAME | BT_LE_ADV_OPT_ONE_TIME);
param.interval_min = 0x00a0;
param.interval_max = 0x00f0;
``bt_data``\ 数据结构:
.. code:: c
struct bt_data {
u8_t type;
u8_t data_len;
const u8_t *data;
};
此数据结构用来填充广播包中的数据,具体的数据包类型可以参考如下:
.. code:: c
Service UUID
Local Name
Flags
Manufacturer Specific Data
TX Power Level
Secure Simple Pairing OOB
Security Manager OOB
Security Manager TK Value
Slave Connection Interval Range
Service Solicitation
Service Data
Appearance
Public Target Address
Random Target Address
Advertising Interval
LE Bluetooth Device Address
LE Role
Uniform Resource Identifier
LE Supported Features
Channel Map Update Indication
用该数据结构配置一个广播包数据,如下所示:
.. code:: c
struct bt_data ad_discov[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
BT_DATA(BT_DATA_NAME_COMPLETE, "BL602-BLE-DEV", 13),
};
``bt_le_scan_param``\ 数据结构:
.. code:: c
/** LE scan parameters */
struct bt_le_scan_param {
/** Scan type (BT_LE_SCAN_TYPE_ACTIVE or BT_LE_SCAN_TYPE_PASSIVE) */
u8_t type;
/** Bit-field of scanning filter options. */
u8_t filter_dup;
/** Scan interval (N * 0.625 ms) */
u16_t interval;
/** Scan window (N * 0.625 ms) */
u16_t window;
};
此数据结构用来填充扫描参数,
type为扫描类型有2种类型BT_LE_SCAN_TYPE_ACTIVE0x01、BT_LE_SCAN_TYPE_PASSIVE(0x00)。
filter_dup0x00,除定向广告外接受所有广播和扫描响应0x01,只接收白名单列表中设备的广播和扫描响应。
interval扫描间隙。
window扫描窗口。
如果开启扫描请求,可以配置如下:
.. code:: c
scan_param.type = BT_LE_SCAN_TYPE_PASSIVE
scan_param.filter_dup = 0x00
interval=BT_GAP_SCAN_SLOW_INTERVAL_1
window=BT_GAP_SCAN_SLOW_WINDOW_1
``bt_le_conn_param``\ 数据结构:
.. code:: c
/** Connection parameters for LE connections */
struct bt_le_conn_param {
u16_t interval_min;
u16_t interval_max;
u16_t latency;
u16_t timeout;
#if defined(CONFIG_BT_STACK_PTS)
u8_t own_address_type;
#endif
};
此数据结构用来填充连接参数interval_min连接间隙最少值0x0018interval_max连接间隙最大值(0x0028)
latency指定为连接事件数的连接允许的最大从延迟。
timeout连接超时时间。
配置该数据结构,如下:
.. code:: c
interval_min=BT_GAP_INIT_CONN_INT_MIN(0x0018)
interval_max=BT_GAP_INIT_CONN_INT_MAX(0x0028)
latency=0
timeout=400
``bt_conn``\ 数据结构:
.. code:: c
struct bt_conn {
u16_t handle;
u8_t type;
u8_t role;
ATOMIC_DEFINE(flags, BT_CONN_NUM_FLAGS);
/* Which local identity address this connection uses */
u8_t id;
#if defined(CONFIG_BT_SMP) || defined(CONFIG_BT_BREDR)
bt_security_t sec_level;
bt_security_t required_sec_level;
u8_t encrypt;
#endif /* CONFIG_BT_SMP || CONFIG_BT_BREDR */
/* Connection error or reason for disconnect */
u8_t err;
bt_conn_state_t state;
u16_t rx_len;
struct net_buf *rx;
/* Sent but not acknowledged TX packets with a callback */
sys_slist_t tx_pending;
/* Sent but not acknowledged TX packets without a callback before
* the next packet (if any) in tx_pending.
*/
u32_t pending_no_cb;
/* Completed TX for which we need to call the callback */
sys_slist_t tx_complete;
struct k_work tx_complete_work;
/* Queue for outgoing ACL data */
struct k_fifo tx_queue;
/* Active L2CAP channels */
sys_slist_t channels;
atomic_t ref;
/* Delayed work for connection update and other deferred tasks */
struct k_delayed_work update_work;
union {
struct bt_conn_le le;
#if defined(CONFIG_BT_BREDR)
struct bt_conn_br br;
struct bt_conn_sco sco;
#endif
};
#if defined(CONFIG_BT_REMOTE_VERSION)
struct bt_conn_rv {
u8_t version;
u16_t manufacturer;
u16_t subversion;
} rv;
#endif
};
此数据结构为当前连接数据结构其中包括BLE蓝牙连接相关的参数连接成功后该数据结构可以被用户调用。

View file

@ -11,7 +11,7 @@ I2C (Inter-Intergrated Circuit) 是一种串行通讯总线,使用多主从架
- 灵活配置的从机地址 ``slaveAddr`` 、寄存器地址 ``subAddr``
- 可以灵活调整的时钟频率
- 支持轮询、中断、DMA传输
- 支持轮询、中断、DMA 传输
I2C 设备结构体定义
@ -28,15 +28,15 @@ I2C 设备结构体定义
} i2c_device_t;
- parent 继承父类属性
- ch i2c id0表示i2c0,1表示i2c1
- mode i2c传输模式0 为使用硬件i2c1为使用软件i2c当前软件i2c暂时无效
- ch i2c id0 表示 i2c0,1 表示 i2c1
- mode i2c 传输模式0 为使用硬件 i2c1 为使用软件 i2c当前软件 i2c 暂时无效
- phase
- 其他待补充
I2C 设备参数配置表
------------------------
每一个 I2C 设备都有一个参数配置宏,宏定义位于 ``bsp/board/xxx`` 目录下 ``peripheral_config.h`` 文件,变量定义位于 ``hal_pwm.c`` 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 ``BSP_USING_I2C0`` ``I2C0_CONFIG`` 即生效,同时 ``I2C`` 设备就可以进行注册和使用了。
每一个 I2C 设备都有一个参数配置宏,宏定义位于 ``bsp/board/xxx`` 目录下 ``peripheral_config.h`` 文件,变量定义位于 ``hal_i2c.c`` 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 ``BSP_USING_I2C0`` ``I2C0_CONFIG`` 即生效,同时 ``I2C`` 设备就可以进行注册和使用了。
.. code-block:: C
@ -120,7 +120,7 @@ I2C 设备标准接口当前仅使用 ``device_open`` , 并提供标准的数据
**i2c_transfer**
^^^^^^^^^^^^^^^^
``i2c_transfer`` 用于设备的数据传输,形参中 ``msgs`` 中的成员 ``flags`` 指示传输的方向是写还是读并且指定寄存器地址长度是0、1、2。
``i2c_transfer`` 用于设备的数据传输,形参中 ``msgs`` 中的成员 ``flags`` 指示传输的方向是写还是读,并且指定寄存器地址长度是 0、1、2。
.. code-block:: C
@ -144,8 +144,8 @@ I2C 设备标准接口当前仅使用 ``device_open`` , 并提供标准的数据
uint8_t *buf;
} i2c_msg_t;
- slaveaddr i2c从设备7位从机地址
- subaddr i2c从设备寄存器地址
- slaveaddr i2c 从设备7位从机地址
- subaddr i2c 从设备寄存器地址
- flags 读写模式以及寄存器地址长度
- len 传输数据长度
- buf 数据缓冲区

View file

@ -16,7 +16,7 @@ SDI数据输入、SDO数据输出、SCLK时钟、CS片选
- 可配置 MSB/LSB 优先传输
- 接收过滤功能
- 从设备下的超时机制
- 支持轮询、中断、DMA传输
- 支持轮询、中断、DMA 传输
SPI 设备结构体定义
------------------------
@ -39,14 +39,14 @@ SPI 设备结构体定义
} spi_device_t;
- parent 继承父类属性
- id SPI id0表示 SPI0
- id SPI id0 表示 SPI0
- clk SPI 时钟频率
- mode 主机模式或者从机模式
- direction 传输先行模式
- clk_polaraity 时钟极性
- clk_phase 时钟相位
- datasize 数据传输位宽
- fifo_threshold fifo 阈值, 最大为4
- fifo_threshold fifo 阈值, 最大为 4
- tx_dma 附加的发送 dma 句柄
- rx_dma 附加的接收 dma 句柄
@ -93,7 +93,7 @@ SPI 设备结构体定义
SPI 设备参数配置表
------------------------
每一个 SPI 设备都有一个参数配置宏,宏定义位于 ``bsp/board/xxx`` 目录下 ``peripheral_config.h`` 文件,变量定义位于 ``hal_uart.c`` 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 ``BSP_USING_SPI0`` ``SPI0_CONFIG`` 即生效,同时 ``SPI0`` 设备就可以进行注册和使用了。
每一个 SPI 设备都有一个参数配置宏,宏定义位于 ``bsp/board/xxx`` 目录下 ``peripheral_config.h`` 文件,变量定义位于 ``hal_spi.c`` 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 ``BSP_USING_SPI0`` ``SPI0_CONFIG`` 即生效,同时 ``SPI0`` 设备就可以进行注册和使用了。
.. code-block:: C

View file

@ -11,7 +11,7 @@ API 分层模型
整体的代码分层框架如图所示:
.. figure:: img/api1.png
.. figure:: img/sw_arch.png
:alt:
code structure

View file

@ -1,9 +1,9 @@
Linux OR WSL 环境开发指南
=============================
本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。而 WSL 的安装配置方式与 linux 下一样。唯一的区别就是一个运行在linux上比如 Ubuntu ,一个运行在 windows 上。如果不想装虚拟机或者linux系统可以选择 WSL。
本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。而 WSL 系统下的安装配置方式与 linux 下一样WSL 系统的安装请自行查阅网络资料安装。其区别就是一个运行在纯 linux 系统上,一个运行在 windows 上。如果不想装虚拟机或者 linux 系统,可以选择 WSL。
**Windows Subsystem for Linux** (简称 WSL )是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件ELF格式的兼容层。它是由微软与Canonical公司合作开发其目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。因此,在 WSL 下的操作方式和 linux 下的操作方式是完全相同的。
**Windows Subsystem for Linux** (简称 WSL )是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件ELF 格式)的兼容层。它是由微软与 Canonical 公司合作开发,其目标是使纯正的 Ubuntu 映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。因此,在 WSL 下的操作方式和 linux 下的操作方式是完全相同的。

View file

@ -1,20 +1,202 @@
基于 cmake 框架构建自己的工程
基于 cmake 框架新建工程指南
================================
添加demo工程
---------------
本文档将介绍一下如何基于本 SDK 新建一个全新的项目
添加demo工程+依赖源文件
examples 的目录结构
------------------------
在 ``bl_mcu_sdk/examples`` 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 ``CMakeList.txt`` 以及该 case 相关的源码
添加单个源文件工程
------------------------
.. note:: 该源文件必须包含 c 程序入口,通常为 ``main`` 函数,源文件可以不叫 ``main.c``
- 在 ``examples`` 目录下新建一个 ``my_case`` 目录,用于存放你的 case 集
- 在 ``my_case`` 目录中新建你要测试 case 的名称,比如新建一个 ``gpio_case`` 目录
- 然后在 ``gpio_case`` 目录中添加 ``main.c`` 和 ``CMakeLists.txt`` 文件即可
目录结构如下:
.. code-block:: bash
:linenos:
bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ └──main.c
└── xxxx_case
`CMakeLists.txt`:
.. code-block:: cmake
:linenos:
:emphasize-lines: 1-2
set(mains main.c)
generate_bin()
- 在 main.c 中编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
.. code-block:: bash
:linenos:
make BOARD=bl706_iot APP=gpio_case
添加多个源文件工程
-----------------------
添加demo工程+依赖库
-----------------------
.. note:: 其中一个源文件必须包含 c 程序入口,通常为 ``main`` 函数,该源文件可以不叫 ``main.c``。该源文件依赖其他源文件。
添加demo工程+私有编译选项gcc option
----------------------------------------
- 添加多源文件工程的步骤与添加单个源文件工程基本步骤一致
- 在 ``gpio_case`` 目录中添加 ``test1.c``、``test1.h``、``test2.c``、``test2.h`` 等需要依赖的源文件和头文件即可
目录结构如下:
.. code-block:: bash
:linenos:
bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ ├──test1.c
│ ├──test1.h
│ ├──test2.c
│ ├──test2.h
│ └──main.c
└── xxxx_case
- 那么此时 ``CMakeLists.txt`` 文件需要添加相应的依赖源文件,内容如下所示:
`CMakeLists.txt`:
.. code-block:: cmake
:linenos:
:emphasize-lines: 2
set(mains main.c)
set(TARGET_REQUIRED_SRCS test1.c test2.c)
generate_bin()
- 编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
.. code-block:: bash
:linenos:
make BOARD=bl706_iot APP=gpio_case
添加有依赖库的新工程
------------------------
- 添加有依赖库的新工程的步骤与添加单个源文件工程基本步骤一致
- 如使用的依赖库在本 SDK 中已存在,那么就只需要修改 CMakeLists.txt 即可
- 如使用的依赖库不存在则需要自行添加,详见后续说明
已存在的情况下,目录结构如下:
.. code-block:: bash
:linenos:
bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ └──main.c
└── xxxx_case
- 那么此时 ``CMakeLists.txt`` 文件需要添加相应的依赖库文件即可,比如我们添加一个 FreeRTOS 组件库,内容如下所示:
`CMakeLists.txt`:
.. code-block:: cmake
:linenos:
:emphasize-lines: 1
set(TARGET_REQUIRED_LIBS freertos)
set(mains main.c)
generate_bin()
- 编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
.. code-block:: bash
:linenos:
make BOARD=bl706_iot APP=gpio_case SUPPORT_FREERTOS=y
添加新工程并设置私有编译选项gcc option
-------------------------------------------
- 添加新工程步骤与添加单源文件工程基本一致
- 主要是在修改 CMakeLists.txt 文件,添加私有编译选项
`CMakeLists.txt`:
.. code-block:: cmake
:linenos:
:emphasize-lines: 2
set(mains main.c)
set(TARGET_REQUIRED_PRIVATE_OPTIONS -Ofast)
generate_bin()
- 编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
.. code-block:: bash
:linenos:
make BOARD=bl706_iot APP=gpio_case
添加新工程并设置私有链接脚本ld
------------------------------------
- 添加新工程步骤与添加单源文件工程基本一致
- 添加私有链接脚本文件,如 ``gpio_test_case.ld``
目录结构如下:
.. code-block:: bash
:linenos:
bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ ├──gpio_test_case.ld
│ └──main.c
└── xxxx_case
- 修改 CMakeLists.txt 文件,添加私有链接脚本设置
`CMakeLists.txt`:
.. code-block:: cmake
:linenos:
:emphasize-lines: 1
set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/gpio_test_case.ld)
set(mains main.c)
generate_bin()
- 编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:
.. code-block:: bash
:linenos:
make BOARD=bl706_iot APP=gpio_case
添加新工程并其依赖的源文件和库文件
-------------------------------------
添加demo工程+私有链接脚本ld
---------------------------------
添加demo工程+依赖源文件+依赖库
---------------------------------

View file

@ -1,6 +1,6 @@
.. _connect_hardware:
硬件连接
硬件连接指南
================
本文档介绍了如何连接 BL70x 系列 MCU 的开发板

View file

@ -23,11 +23,11 @@ BL706_AVB 开发板如下图所示
BL706_AVB
- 一个支持标准 JTAG 功能的调试器:
- 一个支持标准 JTAG 功能的调试器,下面几款调试器中选择一款与开发环境适合即可
- CK-Link 仿真器or
- Jlink V11 仿真器or
- Sipeed USB-JTAG/TTL 调试器or
- CK-Link 仿真器
- Jlink V11 仿真器
- Sipeed USB-JTAG/TTL 调试器
- Bouffalo Lab Debugger 调试器
- 一台 PC 主机(运行 Windows 或者 Linux 系统)

View file

@ -0,0 +1,35 @@
.. _get_started_index:
=======================
开发环境搭建指南
=======================
在正式开发前,请先根据您的环境,搭建好合适的开发环境,具体步骤如下:
.. toctree::
:hidden:
Windows_CDK <Windows_quick_start_cdk>
Windows_eclipse <Windows_quick_start_eclipse>
Linux <Linux_quick_start_ubuntu>
+-------------------+--------------------+-------------------+
| |cdk-logo| | |eclipse-logo| | |linux-logo| |
+-------------------+--------------------+-------------------+
| `Windows_CDK`_ | `Windows_eclipse`_ | `Linux`_ |
+-------------------+--------------------+-------------------+
.. |cdk-logo| image:: img/windows_cdk_logo.png
:target: Windows_quick_start_cdk.html
.. |eclipse-logo| image:: img/windows_eclipse_logo.png
:target: Windows_quick_start_eclipse.html
.. |linux-logo| image:: img/Linux_logo.png
:target: Linux_quick_start_ubuntu.html
.. _Windows_CDK: Windows_quick_start_cdk.html
.. _Windows_eclipse: Windows_quick_start_eclipse.html
.. _Linux: Linux_quick_start_ubuntu.html

View file

@ -19,9 +19,7 @@ BL MCU SDK 将为您提供博流 BL70X 系列 MCU 开发的全方位支持。
:numbered:
get_started/get_started
get_started/Windows_quick_start_cdk
get_started/Windows_quick_start_eclipse
get_started/Linux_quick_start_ubuntu
get_started/index
get_started/bl_dev_cube
get_started/cmake_quick_start
get_started/connecting_hardware

View file

@ -1,7 +1,7 @@
BLE 客户端和服务端互连
=======================
本 demo 基于 **bl702** 演示 **ble server** 和 **ble client** 连接和数据收发。
本 demo 基于 **bl702** 演示 **ble server** 和 **ble client** 连接和数据收发。
准备工具
-----------------------
@ -153,9 +153,9 @@ BLE server 软件实现
$ make BOARD=bl706_iot APP=ble_central SUPPORT_FREERTOS=y SUPPORT_FLOAT=y SUPPORT_BLE=y
- **烧录**
- **烧录**
见 ``使用bouffalo_dev_cube烧录代码``
详见 :ref:`bl_dev_cube`
实验现象
-----------------------------

View file

@ -1,7 +1,7 @@
BOOT2 IAP
============================
IAP 是 In Application Programming 的首字母缩写IAP 是用户自己的程序在运行过程中对 User Flash的部分区域进行烧写
IAP 是 In Application Programming 的首字母缩写IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,
目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
通常在用户需要实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,
@ -25,4 +25,4 @@ bl_mcu_sdk 开源了 boot2_iap 的软件源码,用户可以到 examples/boot2_
实验现象
-----------------------------
使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 `DevCube用户手册 <https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf>`_ <IAP程序下载>章节。
使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 `DevCube用户手册 <https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf>`_ <IAP 程序下载>章节。

View file

@ -6,33 +6,32 @@ LowPower 低功耗评估
博流系列芯片拥有丰富的低功耗特性,以适配不同的低功耗应用场合。为了方便用户快速的评测使用 bl 系列 MCU 低功耗性能 bl_mcu_sdk 提供了一套抽象的低功耗接口,将低功耗等级分为四个等级,分别为
1. Running : Running 为代码正常运行时的功耗,由客户应用代码决定功耗。
1. Running : Running 为 CPU 正常运行时的功耗,由客户应用代码执行的功能决定功耗。
2. WFI WFI 模式,只关闭了 CPU 以节省功耗,当用户退出 WFI 模式的时候程序将会继续运行。
2. WFI WFI 模式,CPU 的 clock 处于被 Gating 状态CPU 停止运行当用户退出WFI模式的时候程序将会继续运行。
3. PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。
3. PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU,和 CPU 处于同一个电源域的 ITCMDTCM 等 RAM 不可使用,只有 64K 的 OCTAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用 GPIO 引脚(在 GPIO 电源域没有关闭的情况下)唤醒。
4. HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。
4. HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU 以及 64K OCRAM只有位于 AON 域的 4K RAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚(位于 AON 域的引脚)唤醒。
如下表所示
bl_mcu_sdk 提供了一个简单的低功耗参考示例(bl_mcu_sdk examples/power/lowpower_test/),旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。
在该示例中,外设及 CPU 的时钟选择均是晶振 32M。基于该示例的功耗测量结果如下表所示:
+------------+------------+------------+---------------------+
|模式 |参考电流 |对应基础模式|唤醒源 |
+============+============+============+=====================+
|running |6.28 mA |run | |
+------------+------------+------------+---------------------+
|WFI |5.14 mA |WFI |任意中断 |
+------------+------------+------------+---------------------+
|PDS |10 uA |PDS 31 |内部RTC/引脚中断 |
+------------+------------+------------+---------------------+
|HBN |1 uA |HBN 1 |内部RTC/引脚中断 |
+------------+------------+------------+---------------------+
+------------+------------+------------+---------------------+---------------------------+
|模式 |参考电流 |对应基础模式|唤醒源 |备注 |
+============+============+============+=====================+===========================+
|Running |5.68 mA |Run | |所有外设时钟都打开 |
+------------+------------+------------+---------------------+---------------------------+
|WFI |3.14 mA |WFI |任意中断 |除串口外,其它外设时钟关闭 |
+------------+------------+------------+---------------------+---------------------------+
|PDS |10 uA |PDS 31 |内部RTC/引脚中断 |64K OCRAM保存数据 |
+------------+------------+------------+---------------------+---------------------------+
|HBN |1 uA |HBN 1 |内部RTC/引脚中断 |4K AON RAM保存数据 |
+------------+------------+------------+---------------------+---------------------------+
bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/power/powerTest/) ,旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。
上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述, run wfi pds hbn 四种等级的定义简化了原先的 hbn level以及 pds level的设定。
上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述run wfi pds hbn 四种等级的定义简化了原先的 hbn level 以及 pds level 的设定。
见 bl702_bl704_bl706_DS_EN_Combo_1.9.pdf page 28
@ -45,12 +44,12 @@ bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/po
**编译低功耗示例代码**
^^^^^^^^^^^^^^^^^^^^^^^^
在工程目录下键入 ``make APP=lowpower_test SUPPORT_SHELL=y BOARD=bl706_lp`` 完成低功耗示例 bl706 的编译。或者直接使用CDK工程完成编译下载
在工程目录下键入 ``make APP=lowpower_test SUPPORT_SHELL=y BOARD=bl706_lp`` 完成低功耗示例 bl706 的编译。或者直接使用 CDK 工程,完成编译下载
您可以参考本文档《快速开发指南》来获取更多编译烧写的信息。
当编译并烧写成功后连接串口到电脑端并复位芯片Xshell 会出现如下图所示的页面。
.. figure:: img/xShell页面.png
.. figure:: img/xShell_lowpower.png
**准备低功耗测试所需的硬件环境**
@ -59,37 +58,37 @@ bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/po
- 可以串联电流表到电源端的电路板
- 电流表
- 一台 PC 主机(运行 Windows 或者 Linux 系统)
- TTLUSB
- TTLUSB
如下图所示,将电流表串联进入 bl706 模组的供电线路通过PC端的串口调试助手软件下发不同的低功耗指令使得 bl706 进入对应的低功耗模式
如下图所示,将电流表串联进入 bl706 模组的供电线路,通过 PC 端的串口调试助手软件,下发不同的低功耗指令,使得 bl706 进入对应的低功耗模式
观察电流表示值,完成评估。
.. figure:: img/低功耗示意图.png
.. figure:: img/lowpower_arch.png
**使用Xshell开始评估低功耗性能**
**使用 Xshell 开始评估低功耗性能**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
用户可以通过在 Xshell输入下述指令进入对应的低功耗模式。
用户可以通过在 Xshell 输入下述指令,进入对应的低功耗模式。
``run``
- 复位芯片之后默认进入run模式没有进入任何低功耗模式芯片实际在运行 while(1); 语句。
- 复位芯片之后,默认进入 run 模式,没有进入任何低功耗模式,芯片实际在运行 while(1); 语句。
``wfi``
- 进入wfi模式后面不加任何参数进入之后关闭CPU降低功耗
- 进入wfi模式后任何中断会唤醒例如uart中断。在Xshell中敲击回车会触发 bl706 UART RX中断因此可以通过此方法唤醒wfi低功耗模式。
- 进入 wfi 模式后面不加任何参数进入之后CPU 处于 clock gating 状态,降低功耗
- 进入 wfi 模式后,任何中断会唤醒,例如 uart 中断。在 Xshell 中敲击回车会触发 BL706 UART RX 中断,因此可以通过此方法唤醒 wfi 低功耗模式。
``pds sleepTim``
``pds sleeptime``
- pds 可以选择带一个 sleepTim 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
- 如果指令包含 sleepTim 参数pds 将会在sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
- 进入低功耗模式后RTC的时钟是32K ,因此 sleepTim 为32768时,表现为睡眠 1S 后唤醒。
- pds 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
- 如果指令包含 sleeptime 参数pds 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
- 进入低功耗模式后RTC 的时钟是 32K因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。
``hbn sleepTim``
``hbn sleeptime``
- hbn 可以选择带一个 sleepTim 的参数决定其内部RTC唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
- 如果指令包含 sleepTim 参数hbn 将会在 sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
- 进入低功耗模式后RTC的时钟是32K ,因此 sleepTim 为32768时表现为睡眠1S 后唤醒。
- hbn 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。
- 如果指令包含 sleeptime 参数hbn 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。
- 进入低功耗模式后RTC 的时钟是 32K因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。

View file

@ -1,11 +1,11 @@
ADC - 按键检测电压
====================
本demo基于ADC使用按键的方式检测外部输入引脚的电压值。
本 demo 主要介绍一个基于 ADC 的按键功能,使用 ADC 检测按键输入引脚的电压值,根据不同的分压值判断相应的按键是否按下
硬件连接
-----------------------------
本demo基于BL706_AVB开发板:
demo 基于 BL706_AVB 开发板:
::
@ -13,27 +13,32 @@ ADC - 按键检测电压
----------------------------------
ADC CH8 <--> GPIO18
**分压电路:**
.. figure:: img/adc_key_demo.png
:alt:
adc key
软件实现
-----------------------------
- 软件代码见 ``examples/adc/adc_key``
- ``ADC`` 设备的时钟源由板级描述文件 ``bsp/board/bl706_iot/clock_config.h`` 来配置
.. code-block:: C
:linenos:
#define BSP_ADC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_XCLK
#define BSP_ADC_CLOCK_DIV 0
- ``ADC`` 设备的复用引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置
- 配置 ``ADC`` 设备时钟源,见 ``bsp/board/bl706_avb/clock_config.h``
.. code-block:: C
:linenos:
#define CONFIG_GPIO18_FUNC GPIO_FUN_ADC
- ``ADC`` 设备配置由板级描述文件 ``bsp/board/bl706_iot/peripheral_config.h`` 来配置
- 配置 ``ADC`` 设备复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h``
.. code-block:: C
:linenos:
@ -55,6 +60,8 @@ ADC - 按键检测电压
#endif
#endif
- 使能 ``BSP_USING_ADC0`` 并配置 ``ADC`` 设备配置,见 ``bsp/board/bl706_iot/peripheral_config.h``
.. code-block:: C
:linenos:
@ -78,9 +85,9 @@ ADC - 按键检测电压
adc_channel_start(adc_key);
- 首先调用 ``adc_register`` 函数注册 ``adc_key`` 设备当前注册为ADC0
- 首先调用 ``adc_register`` 函数注册 ``adc_key`` 设备,当前注册为 ADC0
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``adc_key`` 句柄中
- 然后使用 ``device_open`` 以轮询模式来打开 ``adc_key`` 设备,调用 ``device_control`` 完成ADC相关的配置
- 然后使用 ``device_open`` 以轮询模式来打开 ``adc_key`` 设备,调用 ``device_control`` 完成 ADC 相关的配置
- 最后调用 ``adc_channel_start`` 启用ADC的转换
.. code-block:: C
@ -122,13 +129,13 @@ ADC - 按键检测电压
实验现象
-----------------------------
本实验依次按下开发板上的SW1 ~ SW5会得到不同的电压值:
本实验依次按下开发板上的 SW1 ~ SW5 会得到不同的电压值:
- key 0: 0V左右
- key 1: 0.1V左右
- key 2: 0.2V左右
- key 3: 0.3V左右
- key 4: 0.43V左右
- key 0: 0V 左右
- key 1: 0.1V 左右
- key 2: 0.2V 左右
- key 3: 0.3V 左右
- key 4: 0.43V 左右
实际运行结果如下图所示:

View file

@ -1,12 +1,12 @@
GPIO 输出 - 流水灯
====================
本demo基于GPIO外设的输出模式编写。
demo 基于 GPIO 外设的输出模式编写。
硬件连接
-----------------------------
本 demo 基于BL706_IOT开发板连接方式如下
本 demo 基于 BL706_IOT 开发板,连接方式如下
::

View file

@ -22,14 +22,12 @@ PWM - 呼吸灯
- 软件代码见 ``examples/pwm/pwm_breath_led``
- ``PWM`` 复用引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置
.. code-block:: C
:linenos:
#define CONFIG_GPIO22_FUNC GPIO_FUN_PWM
- ``PWM`` 设备配置由板级描述文件 ``bsp/board/bl706_iot/peripheral_config.h`` 来配置
- 配置 ``PWM`` 设备复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h``
.. code-block:: C
:linenos:
@ -48,6 +46,8 @@ PWM - 呼吸灯
#endif
#endif
- 使能 ``BSP_USING_PWM_CH2`` 并配置 ``PWM`` 设备配置,见 ``bsp/board/bl706_iot/peripheral_config.h``
.. code-block:: C
:linenos:
@ -76,7 +76,7 @@ PWM - 呼吸灯
device_control(led_breath, DEVICE_CTRL_CONFIG, &pwm_cfg);
- 使用 ``device_contorl`` 函数,配合 ``DEVICE_CTRL_CONFIG`` 指令可以修改当前PWM通道的频率和占空比。
- 使用 ``device_contorl`` 函数,配合 ``DEVICE_CTRL_CONFIG`` 指令,可以修改当前 PWM 通道的频率和占空比。
编译和烧录
-----------------------------
@ -103,6 +103,12 @@ PWM - 呼吸灯
实验现象
-----------------------------
.. figure:: img/pwm_demo.gif
:alt:
pwm breath led!
见视频展示:
.. raw:: html

View file

@ -1,7 +1,7 @@
GPIO 中断 - 按键检测
====================
本demo基于GPIO外设外部中断模式编写。
demo 基于 GPIO 外设外部中断模式编写。
硬件连接
-----------------------------

View file

@ -1,7 +1,7 @@
DMA - RAM间数据搬运
====================
本demo基于DMA方向为memory to memory 模式,进行数据的搬运。
demo 基于 DMA方向为 memory to memory 模式,进行数据的搬运。
硬件连接
-----------------------------
@ -12,8 +12,6 @@ DMA - RAM间数据搬运
- 软件代码见 ``examples/dma/dma_m2m``
- ``DMA`` 设备配置由板级描述文件 ``bsp/board/bl706_iot/peripheral_config.h`` 来配置
.. code-block:: C
:linenos:
@ -35,6 +33,8 @@ DMA - RAM间数据搬运
#endif
#endif
- 使能 ``BSP_USING_DMA0_CH0`` 并配置 ``DMA`` 设备配置,见 ``bsp/board/bl706_iot/peripheral_config.h``
.. code-block:: C
:linenos:
@ -110,4 +110,4 @@ DMA - RAM间数据搬运
实验现象
-----------------------------
``dma_src_buffer`` 数组中的数据通过DMA 通道0 以源32位宽、目标32位宽传输到 ``dma_dst_buffer`` 数组中,数据传输完成并完整,串口打印 ``dma transfer success``。
``dma_src_buffer`` 数组中的数据通过 DMA 通道 0 ,以源 32 位宽、目标 32 位宽传输到 ``dma_dst_buffer`` 数组中,数据传输完成并完整,串口打印 ``dma transfer success``。

View file

@ -4,7 +4,7 @@ I2C - AT24CXX 读写
硬件连接
-----------------------------
本 demo 基于BL706_IOT开发板自行添加 AT24CXX 电路,连接方式如下
本 demo 基于 BL706_IOT 开发板,自行添加 AT24CXX 电路,连接方式如下
::
@ -19,15 +19,13 @@ I2C - AT24CXX 读写
- 软件代码见 ``examples/i2c/i2c_at24cxx``
- ``I2C`` 设备的时钟源由板级描述文件 ``bsp/board/bl706_iot/clock_config.h`` 来配置
.. code-block:: C
:linenos:
#define BSP_I2C_CLOCK_SOURCE ROOT_CLOCK_SOURCE_BCLK
#define BSP_I2C_CLOCK_DIV 0
- ``I2C`` 设备的复用引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置
- 配置 ``I2C`` 设备时钟源,见 ``bsp/board/bl706_iot/clock_config.h``
.. code-block:: C
:linenos:
@ -35,8 +33,7 @@ I2C - AT24CXX 读写
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
- ``I2C`` 设备配置由板级描述文件 ``bsp/board/bl706_iot/peripheral_config.h`` 来配置
- 配置 ``I2C`` 设备复用引脚,见 ``bsp/board/bl706_iot/peripheral_config.h``
.. code-block:: C
:linenos:
@ -54,6 +51,8 @@ I2C - AT24CXX 读写
#endif
#endif
- 使能 ``BSP_USING_I2C0`` 并配置 ``I2C`` 设备配置,见 ``bsp/board/bl706_iot/peripheral_config.h``
.. code-block:: C
:linenos:
@ -90,7 +89,7 @@ I2C - AT24CXX 读写
if (i2c_transfer(i2c0, &msg[0], 2) == 0)
MSG("\r\n read:%0x\r\n", msg[1].buf[0] << 8 | msg[1].buf[1]);
- 调用 ``i2c_transfer`` 传输两个 ``msg``,一个 ``msg`` 代表向 eeprom 写入8字节数据一个 ``msg`` 代表从 eeprom 读取8字节数据,
- 调用 ``i2c_transfer`` 传输两个 ``msg``,一个 ``msg`` 代表向 eeprom 写入 8 字节数据,一个 ``msg`` 代表从 eeprom 读取 8 字节数据,
编译和烧录
-----------------------------

View file

@ -1,7 +1,7 @@
MTIMER - 内核定时器
====================
本demo基于 risc-v 内核自带的一个64位定时器MTIMER编写。MTIMER最大可以定时500年本demo可以为后面os tick提供参考。
demo 基于 risc-v 内核自带的一个 64 位定时器MTIMER编写。本 demo 可以为后面 os tick 提供参考。
硬件连接
-----------------------------
@ -12,7 +12,7 @@ MTIMER - 内核定时器
- 软件代码见 ``examples/systick``
- ``mtimer`` 时钟默认经过分频以后为 1M方便后面使用减少计算时间。
.. note:: ``mtimer`` 时钟默认经过分频以后为 1M方便后面使用减少计算时间。
.. code-block:: C
:linenos:
@ -26,7 +26,7 @@ MTIMER - 内核定时器
bflb_platform_set_alarm_time(1000000,systick_isr);
- 使用上述代码设置mtimer定时时间为1s并且注册中断回调函数。
- 使用上述代码设置 mtimer 定时时间为 1s并且注册中断回调函数。
编译和烧录
-----------------------------
@ -52,4 +52,4 @@ MTIMER - 内核定时器
实验现象
-----------------------------
``tick`` 值每秒自增1并通过串口打印。
``tick`` 值每秒自增 1 并通过串口打印。

View file

@ -4,7 +4,7 @@ SPI - TFT LCD 显示
硬件连接
-----------------------------
本 demo 基于BL706_AVB开发板**其中 MISO 和MOSI 默认进行了调换**连接方式如下
本 demo 基于 BL706_AVB 开发板,连接方式如下
::
@ -22,15 +22,13 @@ SPI - TFT LCD 显示
- 软件代码见 ``examples/spi/spi_lcd``
- ``SPI`` 设备的时钟源由板级描述文件 ``bsp/board/bl706_avb/clock_config.h`` 来配置
.. code-block:: C
:linenos:
#define BSP_SPI_CLOCK_SOURCE ROOT_CLOCK_SOURCE_BCLK
#define BSP_SPI_CLOCK_DIV 0
- ``SPI`` 设备的复用引脚由板级描述文件 ``bsp/board/bl706_avb/pinmux_config.h`` 来配置
- 配置 ``SPI`` 设备时钟源,见 ``bsp/board/bl706_avb/clock_config.h``
.. code-block:: C
:linenos:
@ -39,8 +37,11 @@ SPI - TFT LCD 显示
#define CONFIG_GPIO20_FUNC GPIO_FUN_SPI
#define CONFIG_GPIO21_FUNC GPIO_FUN_SPI
- 配置 ``SPI`` 设备复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h``
- ``SPI`` 设备配置由板级描述文件 ``bsp/board/bl706_avb/peripheral_config.h`` 来配置
.. note:: ``bsp/board/bl706_avb/pinmux_config.h`` 当前给所有的示例demo使用所以需要先选定 ``PINMUX_SELECT`` 为 ``PINMUX_LVGL``,开启其中一个 demo
.. note:: 为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 ``drivers/bl702_driver/hal_drv/default_config/spi_config.h`` 中 ``SPI_SWAP_ENABLE`` 为 0
.. code-block:: C
:linenos:
@ -63,6 +64,7 @@ SPI - TFT LCD 显示
#endif
#endif
- 使能 ``BSP_USING_SPI0`` 并配置 ``SPI`` 设备配置,见 ``bsp/board/bl706_avb/peripheral_config.h``
.. code-block:: C
:linenos:
@ -143,3 +145,8 @@ SPI - TFT LCD 显示
实验现象
-----------------------------
.. figure:: img/spi_lcd.png
:alt:
spi display!

View file

@ -1,12 +1,12 @@
UART - 数据自收发
====================
本demo基于 UART 外设轮询发送、接收FIFO中断模式编写。
demo 基于 UART 外设轮询发送、接收 FIFO 中断模式编写。
硬件连接
-----------------------------
本 demo 基于BL706_IOT开发板连接方式如下
本 demo 基于 BL706_IOT 开发板,连接方式如下
::
@ -20,15 +20,13 @@ UART - 数据自收发
- 软件代码见 ``examples/uart/uart_echo``
- ``UART`` 设备的时钟源由板级描述文件 ``bsp/board/bl706_iot/clock_config.h`` 来配置
.. code-block:: C
:linenos:
#define BSP_UART_CLOCK_SOURCE ROOT_CLOCK_SOURCE_PLL_96M
#define BSP_UART_CLOCK_DIV 0
- ``UART`` 设备的复用引脚由板级描述文件 ``bsp/board/bl706_iot/pinmux_config.h`` 来配置
- 配置 ``UART`` 设备时钟源,见 ``bsp/board/bl706_iot/clock_config.h``
.. code-block:: C
:linenos:
@ -36,7 +34,7 @@ UART - 数据自收发
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
- ``UART`` 设备配置由板级描述文件 ``bsp/board/bl706_iot/peripheral_config.h`` 来配置
- 配置 ``UART`` 设备复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h``
.. code-block:: C
:linenos:
@ -57,6 +55,8 @@ UART - 数据自收发
#endif
#endif
- 使能 ``BSP_USING_UART0`` 并配置 ``UART`` 设备配置,见 ``bsp/board/bl706_iot/peripheral_config.h``
.. code-block:: C
:linenos:

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -0,0 +1,906 @@
<!DOCTYPE html>
<html class="writer-html5" lang="zh-CN" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BLE &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
</a>
<div class="version">
0.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="api_structure.html">1. API 分层模型</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_clock.html">2. 时钟树</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_gpio.html">3. GPIO 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_uart.html">4. UART 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_pwm.html">5. PWM 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_dma.html">6. DMA 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_i2c.html">7. I2C 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_spi.html">8. SPI 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_adc.html">9. ADC 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="api_dac.html">10. DAC 设备</a></li>
</ul>
<p class="caption"><span class="caption-text">基础外设例程</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
</ul>
<p class="caption"><span class="caption-text">进阶例程</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">BL_MCU_SDK 开发指南</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>BLE</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/api_reference/api_ble.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="ble">
<span id="ble-index"></span><h1>BLE<a class="headerlink" href="#ble" title="永久链接至标题"></a></h1>
<div class="section" id="id1">
<h2>概述<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<ul>
<li><dl class="simple">
<dt>BLE支持的特性</dt><dd><ul class="simple">
<li><dl class="simple">
<dt>蓝牙HOST特性</dt><dd><ul>
<li><p>GAP支持的角色Peripheral与CentralObserver与Broadcaster</p></li>
<li><p>GATT支持的角色Server与Client</p></li>
<li><p>支持配对包括蓝牙4.2中的安全连接特性</p></li>
<li><p>支持永久存储蓝牙特定的设置和数据</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>蓝牙mesh特性</dt><dd><ul>
<li><p>支持Relay, Friend Node, Low-Power Node (LPN) and GATT Proxy角色</p></li>
<li><p>支持两种Provisioning bearers(PB-ADV &amp; PB-GATT)</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</dd>
</dl>
</li>
<li><dl>
<dt>BLE协议栈的架构</dt><dd><blockquote>
<div><div class="figure align-default">
<img alt="../_images/image1.png" src="../_images/image1.png" />
</div>
</div></blockquote>
<ul class="simple">
<li><dl class="simple">
<dt>总共有3个主要层共同构成了一个完整的蓝牙低能耗协议栈</dt><dd><ul>
<li><p>Host这一层位于应用程序之下,由多个(非实时)网络和传输协议组成,使应用程序能够以标准和互操作的方式与对等设备通信。</p></li>
<li><p>Controller控制器实现了链路层(LE LL)这是一种低层次的实时协议它与无线电硬件一起提供了空中通信的标准互操作。LL处理包的接收和传输保证数据的传递并处理所有LL控制程序。</p></li>
<li><p>Radio Hardware实现所需的模拟和数字基带功能块允许链路层固件在频谱的2.4GHz波段发送和接收。</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</dd>
</dl>
</li>
<li><dl>
<dt>主控Host</dt><dd><blockquote>
<div><div class="figure align-default">
<img alt="../_images/image2.png" src="../_images/image2.png" />
</div>
</div></blockquote>
<ul class="simple">
<li><dl class="simple">
<dt>蓝牙Host层实现了所有高级协议和配置文件最重要的是它为应用程序提供了高级API</dt><dd><ul>
<li><p>HCI:Host与controller接口</p></li>
<li><p>L2CAP:逻辑链路控制和适应协议</p></li>
<li><p>GATT:通用属性配置层Generic Attribute Profile</p></li>
<li><p>GAP:通用访问配置层Generic Access Profile</p></li>
<li><p>SMP:安全管理器配置层Security Manager Specification</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>应用Application</dt><dd><ul class="simple">
<li><dl class="simple">
<dt>应用层是用户开发实际蓝牙应用的地方,包含必要的协议栈参数设置,以及各种功能函数的调用。我们分别从蓝牙从机和蓝牙主机两种设备来分析。</dt><dd><ul>
<li><dl class="simple">
<dt>蓝牙从机</dt><dd><ul>
<li><p>相关硬件和基础服务初始化</p></li>
<li><p>设置广播参数:广播数据,广播间隔,扫描回应等参数或者数据</p></li>
<li><p>设置Profile添加从机服务、特征值还有设置回调函数用于接收主机数据等</p></li>
<li><p>设置配对参数(可选)</p></li>
<li><p>启动广播,开始运行</p></li>
<li><p>等待相关事件,及事件处理,例如收到主机发来的数据,被链接等等</p></li>
</ul>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>蓝牙主机</dt><dd><ul>
<li><p>相关硬件和基础服务初始化</p></li>
<li><p>设置扫描参数</p></li>
<li><p>设置连接参数</p></li>
<li><p>设置配对参数(可选)</p></li>
<li><p>启动协议栈,开始运行</p></li>
<li><p>等待相关事件及事件处理例如扫描事件从机的Notify事件等等。</p></li>
</ul>
</dd>
</dl>
</li>
</ul>
</dd>
</dl>
</li>
</ul>
</dd>
</dl>
</li>
</ul>
</div>
<div class="section" id="api">
<h2>API参考<a class="headerlink" href="#api" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>API介绍</p></li>
</ul>
<p><code class="docutils literal notranslate"><span class="pre">void</span> <span class="pre">ble_controller_init(uint8_t</span> <span class="pre">task_priority)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function controller层初始化
* @param[in] task_priority 任务优先级
* @return 空
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">hci_driver_init(void)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function HCI接口驱动初始化
* @param[in] 空
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_enable(bt_ready_cb_t</span> <span class="pre">cb)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function Ble使能
* @param[in] cb如果成功调用回调函数
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_adv_start(const</span> <span class="pre">struct</span> <span class="pre">bt_le_adv_param</span> <span class="pre">*param,const</span> <span class="pre">struct</span> <span class="pre">bt_data</span> <span class="pre">*ad,</span> <span class="pre">size_t</span> <span class="pre">ad_len,</span></code></dt><dd><p><code class="docutils literal notranslate"><span class="pre">const</span> <span class="pre">struct</span> <span class="pre">bt_data</span> <span class="pre">*sd,</span> <span class="pre">size_t</span> <span class="pre">sd_len)</span></code></p>
</dd>
</dl>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 开启BLE广播
*
* @param[in] param: 指向广播配置参数指针
* @param[in] ad: 指向广播包中数据指针
* @param[in] ad_len: 广播包中数据的长度
* @param[in] sd: 指向扫描响应包数据指针
* @param[in] sd_len: 扫描响应包数据的长度
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_adv_update_data(const</span> <span class="pre">struct</span> <span class="pre">bt_data</span> <span class="pre">*ad,</span> <span class="pre">size_t</span> <span class="pre">ad_len,const</span> <span class="pre">struct</span> <span class="pre">bt_data</span> <span class="pre">*sd,</span> <span class="pre">size_t</span> <span class="pre">sd_len)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 更新BLE广播数据
* @param[in] ad: 指向广播包中数据指针
* @param[in] ad_len: 广播包中数据的长度
* @param[in] sd: 指向扫描响应包数据指针
* @param[in] sd_len: 扫描响应包数据的长度
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_adv_stop(void)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 停止BLE广播
* @param[in] 空
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_scan_start(const</span> <span class="pre">struct</span> <span class="pre">bt_le_scan_param</span> <span class="pre">*param,</span> <span class="pre">bt_le_scan_cb_t</span> <span class="pre">cb)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 开启BLE扫描
* @param[in] param: 指向扫描参数的指针
* @param[in] cb: 扫描回调函数
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_scan_stop(void)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 停止BLE扫描
* @param[in] 空
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_whitelist_add(const</span> <span class="pre">bt_addr_le_t</span> <span class="pre">*addr)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 通过地址添加设备到白名单列表中
* @param[in] addr:指向需要添加设备地址的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_whitelist_rem(const</span> <span class="pre">bt_addr_le_t</span> <span class="pre">*addr)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 从白名单列表中移除设备
* @param[in] addr:指向需要移除设备地址的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_whitelist_clear(void)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 清除白名单列表
* @param[in] 空
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_set_chan_map(u8_t</span> <span class="pre">chan_map[5])</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 设置(LE)通道映射
* @param[in] chan_map通道数组
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_unpair(u8_t</span> <span class="pre">id,</span> <span class="pre">const</span> <span class="pre">bt_addr_le_t</span> <span class="pre">*addr)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 清除配对信息
* @param[in] id 本地标识(大多只是默认的BT ID)
* @param[in] addr 远端设备地址NULL或者BT_ADDR_LE_ANY清除所有远端设备
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_get_info(const</span> <span class="pre">struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn,</span> <span class="pre">struct</span> <span class="pre">bt_conn_info</span> <span class="pre">*info)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 获取当前连接设备的信息
* @param[in] conn 指向当前连接的指针
* @param[in] info 指向当前连接设备信息的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_get_remote_dev_info(struct</span> <span class="pre">bt_conn_info</span> <span class="pre">*info)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 获取已连接设备的信息
* @param[in] info 指向当前连接设备信息的指针
* @return 已连接设备的个数
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_le_param_update(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn,const</span> <span class="pre">struct</span> <span class="pre">bt_le_conn_param</span> <span class="pre">*param)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 更新连接参数
* @param[in] conn 指向当前连接的指针
* @param[in] param 指向连接参数的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_disconnect(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn,</span> <span class="pre">u8_t</span> <span class="pre">reason)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 断开当前连接
* @param[in] conn 指向当前连接的指针
* @param[in] reason断开当前连接的原因
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">bt_conn</span> <span class="pre">*bt_conn_create_le(const</span> <span class="pre">bt_addr_le_t</span> <span class="pre">*peer,const</span> <span class="pre">struct</span> <span class="pre">bt_le_conn_param</span> <span class="pre">*param)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 创建连接
* @param[in] peer 需要连接设备地址的指针
* @param[in] param 指向连接参数指针
* @return 成功:有效的连接对象,否则失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_create_auto_le(const</span> <span class="pre">struct</span> <span class="pre">bt_le_conn_param</span> <span class="pre">*param)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 自动创建连接白名单列表中的设备
* @param[in] param 指向连接参数指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_create_auto_stop(void)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 停止自动创建连接白名单列表中的设备
* @param[in] 空
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_set_auto_conn(const</span> <span class="pre">bt_addr_le_t</span> <span class="pre">*addr,const</span> <span class="pre">struct</span> <span class="pre">bt_le_conn_param</span> <span class="pre">*param)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 自动创建连接远端设备
* @param[in] addr 远端设备地址指针
* @param[in] param 指向连接参数指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">bt_conn</span> <span class="pre">*bt_conn_create_slave_le(const</span> <span class="pre">bt_addr_le_t</span> <span class="pre">*peer,const</span> <span class="pre">struct</span> <span class="pre">bt_le_adv_param</span> <span class="pre">*param)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 发起定向的广播包给远端设备
* @param[in] peer 远端设备地址指针
* @param[in] param 指向广播参数的指针
* @return 成功:有效的连接对象,否则失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_set_security(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn,</span> <span class="pre">bt_security_t</span> <span class="pre">sec)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 设置连接安全等级
* @param[in] conn 指向连接对象的指针
* @param[in] sec 安全等级
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">bt_security_t</span> <span class="pre">bt_conn_get_security(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 获取当前连接的安全等级
* @param[in] conn 指向连接对象的指针
* @return 安全级别
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">u8_t</span> <span class="pre">bt_conn_enc_key_size(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 获取当前连接的加密key的大小
* @param[in] conn 指向连接对象的指针
* @return 加密key的大小
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">void</span> <span class="pre">bt_conn_cb_register(struct</span> <span class="pre">bt_conn_cb</span> <span class="pre">*cb)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 注册连接回调函数
* @param[in] cb 连接回调函数
* @return 空
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">void</span> <span class="pre">bt_set_bondable(bool</span> <span class="pre">enable)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 设置/清除SMP配对请求/响应数据认证需求中的绑定标志
* @param[in] enable 1使能0不使能
* @return 空
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_auth_cb_register(const</span> <span class="pre">struct</span> <span class="pre">bt_conn_auth_cb</span> <span class="pre">*cb)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 注册认证回调函数
* @param[in] cb 回调函数指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_auth_passkey_entry(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn,</span> <span class="pre">unsigned</span> <span class="pre">int</span> <span class="pre">passkey)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 用密钥回复对方
* @param[in] conn 连接对象指针
* @param[in] passkey 输入的密钥
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_auth_cancel(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 取消认证过程
* @param[in] conn 连接对象指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_auth_passkey_confirm(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 如果密码匹配,回复对方
* @param[in] conn 连接对象的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_conn_auth_pincode_entry(struct</span> <span class="pre">bt_conn</span> <span class="pre">*conn,</span> <span class="pre">const</span> <span class="pre">char</span> <span class="pre">*pin)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 用PIN码进行回复对方
* @param[in] conn 连接对象的指针
* @param[in] pin PIN码的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_le_read_rssi(u16_t</span> <span class="pre">handle,int8_t</span> <span class="pre">*rssi)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 读取对方RSSI值
* @param[in] handle连接的句柄值
* @param[in] rssi rssi的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_get_local_address(bt_addr_le_t</span> <span class="pre">*adv_addr)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 读取本机的地址
* @param[in] adv_addr 指向地址的指针
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">int</span> <span class="pre">bt_set_tx_pwr(int8_t</span> <span class="pre">power)</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>/**
* function 设置本机发射功率
* @param[in] power 功率值
* @return 0:成功,!=0:失败
*/
</pre></div>
</div>
</div>
<div class="section" id="id2">
<h2>数据结构参考<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<p><code class="docutils literal notranslate"><span class="pre">bt_le_adv_param</span></code>数据结构:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/** LE Advertising Parameters. */</span>
<span class="k">struct</span> <span class="nc">bt_le_adv_param</span> <span class="p">{</span>
<span class="cm">/** Local identity */</span>
<span class="n">u8_t</span> <span class="n">id</span><span class="p">;</span>
<span class="cm">/** Bit-field of advertising options */</span>
<span class="n">u8_t</span> <span class="n">options</span><span class="p">;</span>
<span class="cm">/** Minimum Advertising Interval (N * 0.625) */</span>
<span class="n">u16_t</span> <span class="n">interval_min</span><span class="p">;</span>
<span class="cm">/** Maximum Advertising Interval (N * 0.625) */</span>
<span class="n">u16_t</span> <span class="n">interval_max</span><span class="p">;</span>
<span class="cp">#if defined(CONFIG_BT_STACK_PTS)</span>
<span class="n">u8_t</span> <span class="n">addr_type</span><span class="p">;</span>
<span class="cp">#endif</span>
<span class="p">};</span>
</pre></div>
</div>
<p>此数据结构用来配置广播参数包括本地识别id、广播选项位域、广播间隙等其中广播选项位域有如下枚举类型参数可选:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">enum</span> <span class="p">{</span>
<span class="cm">/** Convenience value when no options are specified. */</span>
<span class="n">BT_LE_ADV_OPT_NONE</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="cm">/** Advertise as connectable. Type of advertising is determined by</span>
<span class="cm"> * providing SCAN_RSP data and/or enabling local privacy support.</span>
<span class="cm"> */</span>
<span class="n">BT_LE_ADV_OPT_CONNECTABLE</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<span class="cm">/** Don&#39;t try to resume connectable advertising after a connection.</span>
<span class="cm"> * This option is only meaningful when used together with</span>
<span class="cm"> * BT_LE_ADV_OPT_CONNECTABLE. If set the advertising will be stopped</span>
<span class="cm"> * when bt_le_adv_stop() is called or when an incoming (slave)</span>
<span class="cm"> * connection happens. If this option is not set the stack will</span>
<span class="cm"> * take care of keeping advertising enabled even as connections</span>
<span class="cm"> * occur.</span>
<span class="cm"> */</span>
<span class="n">BT_LE_ADV_OPT_ONE_TIME</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<span class="cm">/** Advertise using the identity address as the own address.</span>
<span class="cm"> * @warning This will compromise the privacy of the device, so care</span>
<span class="cm"> * must be taken when using this option.</span>
<span class="cm"> */</span>
<span class="n">BT_LE_ADV_OPT_USE_IDENTITY</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<span class="cm">/** Advertise using GAP device name */</span>
<span class="n">BT_LE_ADV_OPT_USE_NAME</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span>
<span class="cm">/** Use low duty directed advertising mode, otherwise high duty mode</span>
<span class="cm"> * will be used. This option is only effective when used with</span>
<span class="cm"> * bt_conn_create_slave_le().</span>
<span class="cm"> */</span>
<span class="n">BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">4</span><span class="p">),</span>
<span class="cm">/** Enable use of Resolvable Private Address (RPA) as the target address</span>
<span class="cm"> * in directed advertisements when CONFIG_BT_PRIVACY is not enabled.</span>
<span class="cm"> * This is required if the remote device is privacy-enabled and</span>
<span class="cm"> * supports address resolution of the target address in directed</span>
<span class="cm"> * advertisement.</span>
<span class="cm"> * It is the responsibility of the application to check that the remote</span>
<span class="cm"> * device supports address resolution of directed advertisements by</span>
<span class="cm"> * reading its Central Address Resolution characteristic.</span>
<span class="cm"> */</span>
<span class="n">BT_LE_ADV_OPT_DIR_ADDR_RPA</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span>
<span class="cm">/** Use whitelist to filter devices that can request scan response</span>
<span class="cm"> * data.</span>
<span class="cm"> */</span>
<span class="n">BT_LE_ADV_OPT_FILTER_SCAN_REQ</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span>
<span class="cm">/** Use whitelist to filter devices that can connect. */</span>
<span class="n">BT_LE_ADV_OPT_FILTER_CONN</span> <span class="o">=</span> <span class="n">BIT</span><span class="p">(</span><span class="mi">7</span><span class="p">),</span>
<span class="p">};</span>
</pre></div>
</div>
<p>如果需要发送一个广播包,配置可以如下:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">param</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="n">param</span><span class="p">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">(</span><span class="n">BT_LE_ADV_OPT_CONNECTABLE</span> <span class="o">|</span> <span class="n">BT_LE_ADV_OPT_USE_NAME</span> <span class="o">|</span> <span class="n">BT_LE_ADV_OPT_ONE_TIME</span><span class="p">);</span>
<span class="n">param</span><span class="p">.</span><span class="n">interval_min</span> <span class="o">=</span> <span class="mh">0x00a0</span><span class="p">;</span>
<span class="n">param</span><span class="p">.</span><span class="n">interval_max</span> <span class="o">=</span> <span class="mh">0x00f0</span><span class="p">;</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">bt_data</span></code>数据结构:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span> <span class="nc">bt_data</span> <span class="p">{</span>
<span class="n">u8_t</span> <span class="n">type</span><span class="p">;</span>
<span class="n">u8_t</span> <span class="n">data_len</span><span class="p">;</span>
<span class="k">const</span> <span class="n">u8_t</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<p>此数据结构用来填充广播包中的数据,具体的数据包类型可以参考如下:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">Service</span> <span class="n">UUID</span>
<span class="n">Local</span> <span class="n">Name</span>
<span class="n">Flags</span>
<span class="n">Manufacturer</span> <span class="n">Specific</span> <span class="n">Data</span>
<span class="n">TX</span> <span class="n">Power</span> <span class="n">Level</span>
<span class="n">Secure</span> <span class="n">Simple</span> <span class="n">Pairing</span> <span class="n">OOB</span>
<span class="n">Security</span> <span class="n">Manager</span> <span class="n">OOB</span>
<span class="n">Security</span> <span class="n">Manager</span> <span class="n">TK</span> <span class="n">Value</span>
<span class="n">Slave</span> <span class="n">Connection</span> <span class="n">Interval</span> <span class="n">Range</span>
<span class="n">Service</span> <span class="n">Solicitation</span>
<span class="n">Service</span> <span class="n">Data</span>
<span class="n">Appearance</span>
<span class="n">Public</span> <span class="n">Target</span> <span class="n">Address</span>
<span class="n">Random</span> <span class="n">Target</span> <span class="n">Address</span>
<span class="n">Advertising</span> <span class="n">Interval</span>
<span class="n">LE</span> <span class="n">Bluetooth</span> <span class="n">Device</span> <span class="n">Address</span>
<span class="n">LE</span> <span class="n">Role</span>
<span class="n">Uniform</span> <span class="n">Resource</span> <span class="n">Identifier</span>
<span class="n">LE</span> <span class="n">Supported</span> <span class="n">Features</span>
<span class="n">Channel</span> <span class="n">Map</span> <span class="n">Update</span> <span class="n">Indication</span>
</pre></div>
</div>
<p>用该数据结构配置一个广播包数据,如下所示:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span> <span class="nc">bt_data</span> <span class="n">ad_discov</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
<span class="n">BT_DATA_BYTES</span><span class="p">(</span><span class="n">BT_DATA_FLAGS</span><span class="p">,</span> <span class="p">(</span><span class="n">BT_LE_AD_GENERAL</span> <span class="o">|</span> <span class="n">BT_LE_AD_NO_BREDR</span><span class="p">)),</span>
<span class="n">BT_DATA</span><span class="p">(</span><span class="n">BT_DATA_NAME_COMPLETE</span><span class="p">,</span> <span class="s">&quot;BL602-BLE-DEV&quot;</span><span class="p">,</span> <span class="mi">13</span><span class="p">),</span>
<span class="p">};</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">bt_le_scan_param</span></code>数据结构:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/** LE scan parameters */</span>
<span class="k">struct</span> <span class="nc">bt_le_scan_param</span> <span class="p">{</span>
<span class="cm">/** Scan type (BT_LE_SCAN_TYPE_ACTIVE or BT_LE_SCAN_TYPE_PASSIVE) */</span>
<span class="n">u8_t</span> <span class="n">type</span><span class="p">;</span>
<span class="cm">/** Bit-field of scanning filter options. */</span>
<span class="n">u8_t</span> <span class="n">filter_dup</span><span class="p">;</span>
<span class="cm">/** Scan interval (N * 0.625 ms) */</span>
<span class="n">u16_t</span> <span class="n">interval</span><span class="p">;</span>
<span class="cm">/** Scan window (N * 0.625 ms) */</span>
<span class="n">u16_t</span> <span class="n">window</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<p>此数据结构用来填充扫描参数,
type为扫描类型有2种类型BT_LE_SCAN_TYPE_ACTIVE0x01、BT_LE_SCAN_TYPE_PASSIVE(0x00)。
filter_dup0x00,除定向广告外接受所有广播和扫描响应0x01,只接收白名单列表中设备的广播和扫描响应。
interval扫描间隙。
window扫描窗口。</p>
<p>如果开启扫描请求,可以配置如下:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">scan_param</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">BT_LE_SCAN_TYPE_PASSIVE</span>
<span class="n">scan_param</span><span class="p">.</span><span class="n">filter_dup</span> <span class="o">=</span> <span class="mh">0x00</span>
<span class="n">interval</span><span class="o">=</span><span class="n">BT_GAP_SCAN_SLOW_INTERVAL_1</span>
<span class="n">window</span><span class="o">=</span><span class="n">BT_GAP_SCAN_SLOW_WINDOW_1</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">bt_le_conn_param</span></code>数据结构:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/** Connection parameters for LE connections */</span>
<span class="k">struct</span> <span class="nc">bt_le_conn_param</span> <span class="p">{</span>
<span class="n">u16_t</span> <span class="n">interval_min</span><span class="p">;</span>
<span class="n">u16_t</span> <span class="n">interval_max</span><span class="p">;</span>
<span class="n">u16_t</span> <span class="n">latency</span><span class="p">;</span>
<span class="n">u16_t</span> <span class="n">timeout</span><span class="p">;</span>
<span class="cp">#if defined(CONFIG_BT_STACK_PTS)</span>
<span class="n">u8_t</span> <span class="n">own_address_type</span><span class="p">;</span>
<span class="cp">#endif</span>
<span class="p">};</span>
</pre></div>
</div>
<p>此数据结构用来填充连接参数interval_min连接间隙最少值0x0018interval_max连接间隙最大值(0x0028)
latency指定为连接事件数的连接允许的最大从延迟。
timeout连接超时时间。</p>
<p>配置该数据结构,如下:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">interval_min</span><span class="o">=</span><span class="n">BT_GAP_INIT_CONN_INT_MIN</span><span class="p">(</span><span class="mh">0x0018</span><span class="p">)</span>
<span class="n">interval_max</span><span class="o">=</span><span class="n">BT_GAP_INIT_CONN_INT_MAX</span><span class="p">(</span><span class="mh">0x0028</span><span class="p">)</span>
<span class="n">latency</span><span class="o">=</span><span class="mi">0</span>
<span class="n">timeout</span><span class="o">=</span><span class="mi">400</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">bt_conn</span></code>数据结构:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span> <span class="nc">bt_conn</span> <span class="p">{</span>
<span class="n">u16_t</span> <span class="n">handle</span><span class="p">;</span>
<span class="n">u8_t</span> <span class="n">type</span><span class="p">;</span>
<span class="n">u8_t</span> <span class="n">role</span><span class="p">;</span>
<span class="n">ATOMIC_DEFINE</span><span class="p">(</span><span class="n">flags</span><span class="p">,</span> <span class="n">BT_CONN_NUM_FLAGS</span><span class="p">);</span>
<span class="cm">/* Which local identity address this connection uses */</span>
<span class="n">u8_t</span> <span class="n">id</span><span class="p">;</span>
<span class="cp">#if defined(CONFIG_BT_SMP) || defined(CONFIG_BT_BREDR)</span>
<span class="n">bt_security_t</span> <span class="n">sec_level</span><span class="p">;</span>
<span class="n">bt_security_t</span> <span class="n">required_sec_level</span><span class="p">;</span>
<span class="n">u8_t</span> <span class="n">encrypt</span><span class="p">;</span>
<span class="cp">#endif </span><span class="cm">/* CONFIG_BT_SMP || CONFIG_BT_BREDR */</span><span class="cp"></span>
<span class="cm">/* Connection error or reason for disconnect */</span>
<span class="n">u8_t</span> <span class="n">err</span><span class="p">;</span>
<span class="n">bt_conn_state_t</span> <span class="n">state</span><span class="p">;</span>
<span class="n">u16_t</span> <span class="n">rx_len</span><span class="p">;</span>
<span class="k">struct</span> <span class="nc">net_buf</span> <span class="o">*</span><span class="n">rx</span><span class="p">;</span>
<span class="cm">/* Sent but not acknowledged TX packets with a callback */</span>
<span class="n">sys_slist_t</span> <span class="n">tx_pending</span><span class="p">;</span>
<span class="cm">/* Sent but not acknowledged TX packets without a callback before</span>
<span class="cm"> * the next packet (if any) in tx_pending.</span>
<span class="cm"> */</span>
<span class="n">u32_t</span> <span class="n">pending_no_cb</span><span class="p">;</span>
<span class="cm">/* Completed TX for which we need to call the callback */</span>
<span class="n">sys_slist_t</span> <span class="n">tx_complete</span><span class="p">;</span>
<span class="k">struct</span> <span class="nc">k_work</span> <span class="n">tx_complete_work</span><span class="p">;</span>
<span class="cm">/* Queue for outgoing ACL data */</span>
<span class="k">struct</span> <span class="nc">k_fifo</span> <span class="n">tx_queue</span><span class="p">;</span>
<span class="cm">/* Active L2CAP channels */</span>
<span class="n">sys_slist_t</span> <span class="n">channels</span><span class="p">;</span>
<span class="n">atomic_t</span> <span class="n">ref</span><span class="p">;</span>
<span class="cm">/* Delayed work for connection update and other deferred tasks */</span>
<span class="k">struct</span> <span class="nc">k_delayed_work</span> <span class="n">update_work</span><span class="p">;</span>
<span class="k">union</span> <span class="p">{</span>
<span class="k">struct</span> <span class="nc">bt_conn_le</span> <span class="n">le</span><span class="p">;</span>
<span class="cp">#if defined(CONFIG_BT_BREDR)</span>
<span class="k">struct</span> <span class="nc">bt_conn_br</span> <span class="n">br</span><span class="p">;</span>
<span class="k">struct</span> <span class="nc">bt_conn_sco</span> <span class="n">sco</span><span class="p">;</span>
<span class="cp">#endif</span>
<span class="p">};</span>
<span class="cp">#if defined(CONFIG_BT_REMOTE_VERSION)</span>
<span class="k">struct</span> <span class="nc">bt_conn_rv</span> <span class="p">{</span>
<span class="n">u8_t</span> <span class="n">version</span><span class="p">;</span>
<span class="n">u16_t</span> <span class="n">manufacturer</span><span class="p">;</span>
<span class="n">u16_t</span> <span class="n">subversion</span><span class="p">;</span>
<span class="p">}</span> <span class="n">rv</span><span class="p">;</span>
<span class="cp">#endif</span>
<span class="p">};</span>
</pre></div>
</div>
<p>此数据结构为当前连接数据结构其中包括BLE蓝牙连接相关的参数连接成功后该数据结构可以被用户调用。</p>
</div>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&#169; 版权所有 2021, BouffaloLab Co., Ltd.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">
@ -220,7 +218,7 @@
<ul class="simple">
<li><p>灵活配置的从机地址 <code class="docutils literal notranslate"><span class="pre">slaveAddr</span></code> 、寄存器地址 <code class="docutils literal notranslate"><span class="pre">subAddr</span></code></p></li>
<li><p>可以灵活调整的时钟频率</p></li>
<li><p>支持轮询、中断、DMA传输</p></li>
<li><p>支持轮询、中断、DMA 传输</p></li>
</ul>
</div>
<div class="section" id="id2">
@ -236,15 +234,15 @@
</div>
<ul class="simple">
<li><p>parent 继承父类属性</p></li>
<li><p>ch i2c id0表示i2c0,1表示i2c1</p></li>
<li><p>mode i2c传输模式0 为使用硬件i2c1为使用软件i2c当前软件i2c暂时无效</p></li>
<li><p>ch i2c id0 表示 i2c0,1 表示 i2c1</p></li>
<li><p>mode i2c 传输模式0 为使用硬件 i2c1 为使用软件 i2c当前软件 i2c 暂时无效</p></li>
<li><p>phase</p></li>
<li><p>其他待补充</p></li>
</ul>
</div>
<div class="section" id="id3">
<h2><span class="section-number">7.3. </span>I2C 设备参数配置表<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<p>每一个 I2C 设备都有一个参数配置宏,宏定义位于 <code class="docutils literal notranslate"><span class="pre">bsp/board/xxx</span></code> 目录下 <code class="docutils literal notranslate"><span class="pre">peripheral_config.h</span></code> 文件,变量定义位于 <code class="docutils literal notranslate"><span class="pre">hal_pwm.c</span></code> 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 <code class="docutils literal notranslate"><span class="pre">BSP_USING_I2C0</span></code> <code class="docutils literal notranslate"><span class="pre">I2C0_CONFIG</span></code> 即生效,同时 <code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备就可以进行注册和使用了。</p>
<p>每一个 I2C 设备都有一个参数配置宏,宏定义位于 <code class="docutils literal notranslate"><span class="pre">bsp/board/xxx</span></code> 目录下 <code class="docutils literal notranslate"><span class="pre">peripheral_config.h</span></code> 文件,变量定义位于 <code class="docutils literal notranslate"><span class="pre">hal_i2c.c</span></code> 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 <code class="docutils literal notranslate"><span class="pre">BSP_USING_I2C0</span></code> <code class="docutils literal notranslate"><span class="pre">I2C0_CONFIG</span></code> 即生效,同时 <code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备就可以进行注册和使用了。</p>
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cm">/*参数配置宏*/</span>
<span class="cp">#if defined(BSP_USING_I2C0)</span>
<span class="cp">#ifndef I2C0_CONFIG</span>
@ -319,7 +317,7 @@
</div>
<div class="section" id="i2c-transfer">
<h3><span class="section-number">7.4.3. </span><strong>i2c_transfer</strong><a class="headerlink" href="#i2c-transfer" title="永久链接至标题"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">i2c_transfer</span></code> 用于设备的数据传输,形参中 <code class="docutils literal notranslate"><span class="pre">msgs</span></code> 中的成员 <code class="docutils literal notranslate"><span class="pre">flags</span></code> 指示传输的方向是写还是读并且指定寄存器地址长度是0、1、2。</p>
<p><code class="docutils literal notranslate"><span class="pre">i2c_transfer</span></code> 用于设备的数据传输,形参中 <code class="docutils literal notranslate"><span class="pre">msgs</span></code> 中的成员 <code class="docutils literal notranslate"><span class="pre">flags</span></code> 指示传输的方向是写还是读,并且指定寄存器地址长度是 0、1、2。</p>
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="kt">int</span> <span class="nf">i2c_transfer</span><span class="p">(</span><span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="n">i2c_msg_t</span> <span class="n">msgs</span><span class="p">[],</span> <span class="kt">uint32_t</span> <span class="n">num</span><span class="p">);</span>
</pre></div>
</div>
@ -341,8 +339,8 @@
</pre></div>
</div>
<ul class="simple">
<li><p>slaveaddr i2c从设备7位从机地址</p></li>
<li><p>subaddr i2c从设备寄存器地址</p></li>
<li><p>slaveaddr i2c 从设备7位从机地址</p></li>
<li><p>subaddr i2c 从设备寄存器地址</p></li>
<li><p>flags 读写模式以及寄存器地址长度</p></li>
<li><p>len 传输数据长度</p></li>
<li><p>buf 数据缓冲区</p></li>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">
@ -232,7 +230,7 @@ SDI数据输入、SDO数据输出、SCLK时钟、CS片选
<li><p>可配置 MSB/LSB 优先传输</p></li>
<li><p>接收过滤功能</p></li>
<li><p>从设备下的超时机制</p></li>
<li><p>支持轮询、中断、DMA传输</p></li>
<li><p>支持轮询、中断、DMA 传输</p></li>
</ul>
</div>
<div class="section" id="id2">
@ -255,14 +253,14 @@ SDI数据输入、SDO数据输出、SCLK时钟、CS片选
</div>
<ul class="simple">
<li><p>parent 继承父类属性</p></li>
<li><p>id SPI id0表示 SPI0</p></li>
<li><p>id SPI id0 表示 SPI0</p></li>
<li><p>clk SPI 时钟频率</p></li>
<li><p>mode 主机模式或者从机模式</p></li>
<li><p>direction 传输先行模式</p></li>
<li><p>clk_polaraity 时钟极性</p></li>
<li><p>clk_phase 时钟相位</p></li>
<li><p>datasize 数据传输位宽</p></li>
<li><p>fifo_threshold fifo 阈值, 最大为4</p></li>
<li><p>fifo_threshold fifo 阈值, 最大为 4</p></li>
<li><p>tx_dma 附加的发送 dma 句柄</p></li>
<li><p>rx_dma 附加的接收 dma 句柄</p></li>
</ul>
@ -298,7 +296,7 @@ SDI数据输入、SDO数据输出、SCLK时钟、CS片选
</div>
<div class="section" id="id3">
<h2><span class="section-number">8.3. </span>SPI 设备参数配置表<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<p>每一个 SPI 设备都有一个参数配置宏,宏定义位于 <code class="docutils literal notranslate"><span class="pre">bsp/board/xxx</span></code> 目录下 <code class="docutils literal notranslate"><span class="pre">peripheral_config.h</span></code> 文件,变量定义位于 <code class="docutils literal notranslate"><span class="pre">hal_uart.c</span></code> 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 <code class="docutils literal notranslate"><span class="pre">BSP_USING_SPI0</span></code> <code class="docutils literal notranslate"><span class="pre">SPI0_CONFIG</span></code> 即生效,同时 <code class="docutils literal notranslate"><span class="pre">SPI0</span></code> 设备就可以进行注册和使用了。</p>
<p>每一个 SPI 设备都有一个参数配置宏,宏定义位于 <code class="docutils literal notranslate"><span class="pre">bsp/board/xxx</span></code> 目录下 <code class="docutils literal notranslate"><span class="pre">peripheral_config.h</span></code> 文件,变量定义位于 <code class="docutils literal notranslate"><span class="pre">hal_spi.c</span></code> 中,因此无需用户自己定义变量。当用户打开对应设备的宏,该设备的配置才生效。例如打开宏 <code class="docutils literal notranslate"><span class="pre">BSP_USING_SPI0</span></code> <code class="docutils literal notranslate"><span class="pre">SPI0_CONFIG</span></code> 即生效,同时 <code class="docutils literal notranslate"><span class="pre">SPI0</span></code> 设备就可以进行注册和使用了。</p>
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cm">/*参数配置宏*/</span>
<span class="cp">#if defined(BSP_USING_SPI0)</span>
<span class="cp">#ifndef SPI0_CONFIG</span>

View file

@ -40,7 +40,7 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="2. 时钟树" href="api_clock.html" />
<link rel="prev" title="7. 硬件连接" href="../get_started/connecting_hardware.html" />
<link rel="prev" title="5. 硬件连接指南" href="../get_started/connecting_hardware.html" />
</head>
<body class="wy-body-for-nav">
@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">
@ -226,7 +224,7 @@
</ul>
<p>整体的代码分层框架如图所示:</p>
<div class="figure align-default" id="id5">
<img alt="" src="../_images/api1.png" />
<img alt="" src="../_images/sw_arch.png" />
<p class="caption"><span class="caption-text">code structure</span><a class="headerlink" href="#id5" title="永久链接至图片"></a></p>
</div>
<ul class="simple">
@ -485,7 +483,7 @@
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="api_clock.html" class="btn btn-neutral float-right" title="2. 时钟树" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../get_started/connecting_hardware.html" class="btn btn-neutral float-left" title="7. 硬件连接" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../get_started/connecting_hardware.html" class="btn btn-neutral float-left" title="5. 硬件连接指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul class="current">

View file

@ -90,12 +90,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>

View file

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>4. Linux OR WSL 环境开发指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<title>2.3. Linux OR WSL 环境开发指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
@ -39,8 +39,8 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="5. BLDevCube 烧录工具指南" href="bl_dev_cube.html" />
<link rel="prev" title="3. Windows 下使用 Eclipse 开发指南" href="Windows_quick_start_eclipse.html" />
<link rel="next" title="3. BLDevCube 烧录工具指南" href="bl_dev_cube.html" />
<link rel="prev" title="2.2. Windows 下使用 Eclipse 开发指南" href="Windows_quick_start_eclipse.html" />
</head>
<body class="wy-body-for-nav">
@ -92,27 +92,30 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">4. Linux OR WSL 环境开发指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">4.1. 需要的软硬件环境</a></li>
<li class="toctree-l2"><a class="reference internal" href="#risc-v">4.2. 配置 RISC-V 工具链</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cmake-make">4.3. 配置 cmake &amp; make 工具</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">4.4. 硬件连接</a></li>
<li class="toctree-l2"><a class="reference internal" href="#bl-mcu-sdk">4.5. 获取 bl_mcu_sdk</a></li>
<li class="toctree-l2"><a class="reference internal" href="#hello-world">4.6. 测试 Hello World 工程</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id3">4.6.1. 打开 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">4.6.2. 编译 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">4.6.3. 烧写 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id6">4.6.4. 运行 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">4.6.5. 调试 Hello World</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Windows_quick_start_cdk.html">2.1. Windows_CDK</a></li>
<li class="toctree-l2"><a class="reference internal" href="Windows_quick_start_eclipse.html">2.2. Windows_eclipse</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">2.3. Linux</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">2.3.1. 需要的软硬件环境</a></li>
<li class="toctree-l3"><a class="reference internal" href="#risc-v">2.3.2. 配置 RISC-V 工具链</a></li>
<li class="toctree-l3"><a class="reference internal" href="#cmake-make">2.3.3. 配置 cmake &amp; make 工具</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">2.3.4. 硬件连接</a></li>
<li class="toctree-l3"><a class="reference internal" href="#bl-mcu-sdk">2.3.5. 获取 bl_mcu_sdk</a></li>
<li class="toctree-l3"><a class="reference internal" href="#hello-world">2.3.6. 测试 Hello World 工程</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id3">2.3.6.1. 打开 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id4">2.3.6.2. 编译 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id5">2.3.6.3. 烧写 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id6">2.3.6.4. 运行 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id7">2.3.6.5. 调试 Hello World</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">7. 硬件连接</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -194,7 +197,9 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">4. </span>Linux OR WSL 环境开发指南</li>
<li><a href="index.html"><span class="section-number">2. </span>开发环境搭建指南</a> &raquo;</li>
<li><span class="section-number">2.3. </span>Linux OR WSL 环境开发指南</li>
<li class="wy-breadcrumbs-aside">
@ -214,11 +219,11 @@
<div itemprop="articleBody">
<div class="section" id="linux-or-wsl">
<h1><span class="section-number">4. </span>Linux OR WSL 环境开发指南<a class="headerlink" href="#linux-or-wsl" title="永久链接至标题"></a></h1>
<p>本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。而 WSL 的安装配置方式与 linux 下一样。唯一的区别就是一个运行在linux上比如 Ubuntu ,一个运行在 windows 上。如果不想装虚拟机或者linux系统可以选择 WSL。</p>
<p><strong>Windows Subsystem for Linux</strong> (简称 WSL )是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件ELF格式的兼容层。它是由微软与Canonical公司合作开发其目标是使纯正的Ubuntu 14.04 “Trusty Tahr”映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。因此,在 WSL 下的操作方式和 linux 下的操作方式是完全相同的。</p>
<h1><span class="section-number">2.3. </span>Linux OR WSL 环境开发指南<a class="headerlink" href="#linux-or-wsl" title="永久链接至标题"></a></h1>
<p>本文档介绍了如何在 Linux 安装配置 BL702 系列 MCU 需要的软件开发工具。而 WSL 系统下的安装配置方式与 linux 下一样WSL 系统的安装请自行查阅网络资料安装。其区别就是一个运行在纯 linux 系统上,一个运行在 windows 上。如果不想装虚拟机或者 linux 系统,可以选择 WSL。</p>
<p><strong>Windows Subsystem for Linux</strong> (简称 WSL )是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件ELF 格式)的兼容层。它是由微软与 Canonical 公司合作开发,其目标是使纯正的 Ubuntu 映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。因此,在 WSL 下的操作方式和 linux 下的操作方式是完全相同的。</p>
<div class="section" id="id1">
<h2><span class="section-number">4.1. </span>需要的软硬件环境<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.3.1. </span>需要的软硬件环境<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>一根 mini USB 数据线</p></li>
<li><p>一个 USB-TTL 串口模块</p></li>
@ -226,7 +231,7 @@
</ul>
</div>
<div class="section" id="risc-v">
<h2><span class="section-number">4.2. </span>配置 RISC-V 工具链<a class="headerlink" href="#risc-v" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.3.2. </span>配置 RISC-V 工具链<a class="headerlink" href="#risc-v" title="永久链接至标题"></a></h2>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
@ -244,7 +249,7 @@ $ mkdir -p riscv64-elf-20210120
</td></tr></table></div>
</div>
<div class="section" id="cmake-make">
<h2><span class="section-number">4.3. </span>配置 cmake &amp; make 工具<a class="headerlink" href="#cmake-make" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.3.3. </span>配置 cmake &amp; make 工具<a class="headerlink" href="#cmake-make" title="永久链接至标题"></a></h2>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
@ -264,14 +269,14 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</td></tr></table></div>
</div>
<div class="section" id="id2">
<h2><span class="section-number">4.4. </span>硬件连接<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.3.4. </span>硬件连接<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>具体开发板的连接, 请参考 <a class="reference internal" href="connecting_hardware.html#connect-hardware"><span class="std std-ref">硬件连接</span></a> 部分</p></li>
<li><p>具体开发板的连接, 请参考 <a class="reference internal" href="connecting_hardware.html#connect-hardware"><span class="std std-ref">硬件连接指南</span></a> 部分</p></li>
<li><p>请确保开发板正确设置后再进行下面的步骤 (建议 Linux 下采用串口连接)</p></li>
</ul>
</div>
<div class="section" id="bl-mcu-sdk">
<h2><span class="section-number">4.5. </span>获取 bl_mcu_sdk<a class="headerlink" href="#bl-mcu-sdk" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.3.5. </span>获取 bl_mcu_sdk<a class="headerlink" href="#bl-mcu-sdk" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>打开终端输入以下命令获取 bl_mcu_sdk</p></li>
</ul>
@ -282,9 +287,9 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</td></tr></table></div>
</div>
<div class="section" id="hello-world">
<h2><span class="section-number">4.6. </span>测试 Hello World 工程<a class="headerlink" href="#hello-world" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.3.6. </span>测试 Hello World 工程<a class="headerlink" href="#hello-world" title="永久链接至标题"></a></h2>
<div class="section" id="id3">
<h3><span class="section-number">4.6.1. </span>打开 Hello World<a class="headerlink" href="#id3" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.3.6.1. </span>打开 Hello World<a class="headerlink" href="#id3" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>获取到 SDK 后,进入 sdk 中的 <code class="docutils literal notranslate"><span class="pre">examples/hellowd/helloworld</span></code> 目录下,打开 <code class="docutils literal notranslate"><span class="pre">main.c</span></code>,即可编辑 helloworld 的相关代码。</p></li>
</ul>
@ -298,7 +303,7 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</ul>
</div>
<div class="section" id="id4">
<h3><span class="section-number">4.6.2. </span>编译 Hello World<a class="headerlink" href="#id4" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.3.6.2. </span>编译 Hello World<a class="headerlink" href="#id4" title="永久链接至标题"></a></h3>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> ~/bl_mcu_sdk
$ make build <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>helloworld
@ -306,7 +311,7 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</td></tr></table></div>
</div>
<div class="section" id="id5">
<h3><span class="section-number">4.6.3. </span>烧写 Hello World<a class="headerlink" href="#id5" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.3.6.3. </span>烧写 Hello World<a class="headerlink" href="#id5" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>烧写前请先确认烧写方式,若采用串口烧写,请先按住板子上的 <code class="docutils literal notranslate"><span class="pre">boot</span></code> 键不要释放,此时在按下 <code class="docutils literal notranslate"><span class="pre">rst</span></code> 键,然后释放两个键,此时板子进入 boot_rom 状态。</p></li>
<li><p>这时在终端中输入以下命令进行烧写</p></li>
@ -340,7 +345,7 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</ul>
</div>
<div class="section" id="id6">
<h3><span class="section-number">4.6.4. </span>运行 Hello World<a class="headerlink" href="#id6" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.3.6.4. </span>运行 Hello World<a class="headerlink" href="#id6" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>打开新的终端,安装、运行串口工具</p></li>
</ul>
@ -358,7 +363,7 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</div>
</div>
<div class="section" id="id7">
<h3><span class="section-number">4.6.5. </span>调试 Hello World<a class="headerlink" href="#id7" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.3.6.5. </span>调试 Hello World<a class="headerlink" href="#id7" title="永久链接至标题"></a></h3>
</div>
</div>
</div>
@ -369,8 +374,8 @@ $ wget -c https://cmake.org/files/v3.19/cmake-3.19.3-Linux-x86_64.tar.gz
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="bl_dev_cube.html" class="btn btn-neutral float-right" title="5. BLDevCube 烧录工具指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Windows_quick_start_eclipse.html" class="btn btn-neutral float-left" title="3. Windows 下使用 Eclipse 开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="bl_dev_cube.html" class="btn btn-neutral float-right" title="3. BLDevCube 烧录工具指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Windows_quick_start_eclipse.html" class="btn btn-neutral float-left" title="2.2. Windows 下使用 Eclipse 开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. Windows 下使用 CDK (类 MDK Keil)开发指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<title>2.1. Windows 下使用 CDK (类 MDK Keil)开发指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
@ -39,8 +39,8 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="3. Windows 下使用 Eclipse 开发指南" href="Windows_quick_start_eclipse.html" />
<link rel="prev" title="1. 开发前的准备" href="get_started.html" />
<link rel="next" title="2.2. Windows 下使用 Eclipse 开发指南" href="Windows_quick_start_eclipse.html" />
<link rel="prev" title="2. 开发环境搭建指南" href="index.html" />
</head>
<body class="wy-body-for-nav">
@ -92,26 +92,29 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id2">2.1. 需要的软硬件环境</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cdk">2.2. 下载剑池 CDK 软件安装包</a></li>
<li class="toctree-l2"><a class="reference internal" href="#bl-mcu-sdk">2.3. 下载 bl_mcu_sdk 软件开发包</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id4">2.4. 硬件连接</a></li>
<li class="toctree-l2"><a class="reference internal" href="#hello-world">2.5. 测试 Hello World 工程</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id5">2.5.1. 打开 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id6">2.5.2. 编译 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">2.5.3. 烧写 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">2.5.4. 运行 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">2.5.5. 调试 Hello World</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">2.1. Windows_CDK</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id2">2.1.1. 需要的软硬件环境</a></li>
<li class="toctree-l3"><a class="reference internal" href="#cdk">2.1.2. 下载剑池 CDK 软件安装包</a></li>
<li class="toctree-l3"><a class="reference internal" href="#bl-mcu-sdk">2.1.3. 下载 bl_mcu_sdk 软件开发包</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">2.1.4. 硬件连接</a></li>
<li class="toctree-l3"><a class="reference internal" href="#hello-world">2.1.5. 测试 Hello World 工程</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id5">2.1.5.1. 打开 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id6">2.1.5.2. 编译 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id7">2.1.5.3. 烧写 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id8">2.1.5.4. 运行 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id9">2.1.5.5. 调试 Hello World</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l2"><a class="reference internal" href="Windows_quick_start_eclipse.html">2.2. Windows_eclipse</a></li>
<li class="toctree-l2"><a class="reference internal" href="Linux_quick_start_ubuntu.html">2.3. Linux</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -193,7 +196,9 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">2. </span>Windows 下使用 CDK (类 MDK Keil)开发指南</li>
<li><a href="index.html"><span class="section-number">2. </span>开发环境搭建指南</a> &raquo;</li>
<li><span class="section-number">2.1. </span>Windows 下使用 CDK (类 MDK Keil)开发指南</li>
<li class="wy-breadcrumbs-aside">
@ -213,12 +218,12 @@
<div itemprop="articleBody">
<div class="section" id="windows-cdk-mdk-keil">
<span id="windows-cdk-quick-start"></span><h1><span class="section-number">2. </span>Windows 下使用 CDK (类 MDK Keil)开发指南<a class="headerlink" href="#windows-cdk-mdk-keil" title="永久链接至标题"></a></h1>
<span id="windows-cdk-quick-start"></span><h1><span class="section-number">2.1. </span>Windows 下使用 CDK (类 MDK Keil)开发指南<a class="headerlink" href="#windows-cdk-mdk-keil" title="永久链接至标题"></a></h1>
<p>本文档介绍了如何在 Windows 下使用 <a class="reference external" href="https://www.t-heah.cn/about">平头哥半导体</a> 开发的 CDK 集成开发环境,
来完成博流 BL702 系列 MCU 的相关软件开发工作。</p>
<p>关于剑池 CDK ,这是一款由平头哥半导体开发打造的集成开发环境。它拥有和传统 MCU 开发环境十分近似的操作和设置,旨在不改变用户开发习惯的基础上,全面接入云端开发资源,结合图形化的 OSTracer、Profiling 等调试分析工具,加速用户产品开发。</p>
<div class="section" id="id2">
<h2><span class="section-number">2.1. </span>需要的软硬件环境<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.1.1. </span>需要的软硬件环境<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>剑池 CDK 软件</p></li>
<li><p>一根 USB Type-A 数据线</p></li>
@ -228,14 +233,14 @@
</ul>
</div>
<div class="section" id="cdk">
<h2><span class="section-number">2.2. </span>下载剑池 CDK 软件安装包<a class="headerlink" href="#cdk" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.1.2. </span>下载剑池 CDK 软件安装包<a class="headerlink" href="#cdk" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://occ.t-head.cn/development/series/download?id=3864775351511420928&amp;type=kind&amp;softPlatformType=4#sticky">剑池CDK</a> 软件安装可以从平头哥半导体 OCC 官网获取到。</p></li>
<li><p>下载完成后,解压缩,双击 <code class="docutils literal notranslate"><span class="pre">setup.exe</span></code>,按照其提示,完成软件安装即可。</p></li>
</ul>
</div>
<div class="section" id="bl-mcu-sdk">
<h2><span class="section-number">2.3. </span>下载 bl_mcu_sdk 软件开发包<a class="headerlink" href="#bl-mcu-sdk" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.1.3. </span>下载 bl_mcu_sdk 软件开发包<a class="headerlink" href="#bl-mcu-sdk" title="永久链接至标题"></a></h2>
<ul>
<li><p>从开源社区下载 bl_mcu_sdk 软件开发包。</p>
<ul class="simple">
@ -249,22 +254,22 @@
</ul>
</div>
<div class="section" id="id4">
<h2><span class="section-number">2.4. </span>硬件连接<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.1.4. </span>硬件连接<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>具体开发板的连接, 请参考 <a class="reference internal" href="connecting_hardware.html#connect-hardware"><span class="std std-ref">硬件连接</span></a> 部分</p></li>
<li><p>具体开发板的连接, 请参考 <a class="reference internal" href="connecting_hardware.html#connect-hardware"><span class="std std-ref">硬件连接指南</span></a> 部分</p></li>
<li><p>请确保开发板被正确设置后再进行下面的步骤</p></li>
</ul>
</div>
<div class="section" id="hello-world">
<h2><span class="section-number">2.5. </span>测试 Hello World 工程<a class="headerlink" href="#hello-world" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.1.5. </span>测试 Hello World 工程<a class="headerlink" href="#hello-world" title="永久链接至标题"></a></h2>
<div class="section" id="id5">
<h3><span class="section-number">2.5.1. </span>打开 Hello World<a class="headerlink" href="#id5" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.1.5.1. </span>打开 Hello World<a class="headerlink" href="#id5" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>获取到 SDK 后,进入 sdk 中的 <code class="docutils literal notranslate"><span class="pre">examples/hellowd/helloworld/cdk</span></code> 目录下,双击 <code class="docutils literal notranslate"><span class="pre">helloworld.cdkproj</span></code>,即可打开 <code class="docutils literal notranslate"><span class="pre">Helloworld</span></code> 工程。</p></li>
</ul>
</div>
<div class="section" id="id6">
<h3><span class="section-number">2.5.2. </span>编译 Hello World<a class="headerlink" href="#id6" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.1.5.2. </span>编译 Hello World<a class="headerlink" href="#id6" title="永久链接至标题"></a></h3>
<div class="figure align-default" id="id10">
<img alt="" src="../_images/cdk1.png" />
<p class="caption"><span class="caption-text">helloworld.cdkproj</span><a class="headerlink" href="#id10" title="永久链接至图片"></a></p>
@ -282,7 +287,7 @@
</ul>
</div>
<div class="section" id="id7">
<h3><span class="section-number">2.5.3. </span>烧写 Hello World<a class="headerlink" href="#id7" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.1.5.3. </span>烧写 Hello World<a class="headerlink" href="#id7" title="永久链接至标题"></a></h3>
<ul>
<li><p>由于目前 CDK 软件中还没有包含我们的 flash 算法,所以需要我们手动将 flash 算法放到 CDK 安装目录,具体操作如下:</p>
<ul class="simple">
@ -339,7 +344,7 @@
</ul>
</div>
<div class="section" id="id8">
<h3><span class="section-number">2.5.4. </span>运行 Hello World<a class="headerlink" href="#id8" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.1.5.4. </span>运行 Hello World<a class="headerlink" href="#id8" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>从 CDK 的菜单栏 <code class="docutils literal notranslate"><span class="pre">View-&gt;Serial</span> <span class="pre">Pane</span></code>,打开串口面板,在打开的 <code class="docutils literal notranslate"><span class="pre">Serial</span> <span class="pre">Pane</span></code> 中右击,进行串口设置,选择你对应的串口号和波特率</p></li>
</ul>
@ -359,7 +364,7 @@
</div>
</div>
<div class="section" id="id9">
<h3><span class="section-number">2.5.5. </span>调试 Hello World<a class="headerlink" href="#id9" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.1.5.5. </span>调试 Hello World<a class="headerlink" href="#id9" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>点击工具栏上方的 <code class="docutils literal notranslate"><span class="pre">Start/Stop</span> <span class="pre">Debugger</span></code> 按钮,进入 debug 界面,如下图所示</p></li>
</ul>
@ -388,8 +393,8 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Windows_quick_start_eclipse.html" class="btn btn-neutral float-right" title="3. Windows 下使用 Eclipse 开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="get_started.html" class="btn btn-neutral float-left" title="1. 开发前的准备" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Windows_quick_start_eclipse.html" class="btn btn-neutral float-right" title="2.2. Windows 下使用 Eclipse 开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="index.html" class="btn btn-neutral float-left" title="2. 开发环境搭建指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>3. Windows 下使用 Eclipse 开发指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<title>2.2. Windows 下使用 Eclipse 开发指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
@ -39,8 +39,8 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="4. Linux OR WSL 环境开发指南" href="Linux_quick_start_ubuntu.html" />
<link rel="prev" title="2. Windows 下使用 CDK (类 MDK Keil)开发指南" href="Windows_quick_start_cdk.html" />
<link rel="next" title="2.3. Linux OR WSL 环境开发指南" href="Linux_quick_start_ubuntu.html" />
<link rel="prev" title="2.1. Windows 下使用 CDK (类 MDK Keil)开发指南" href="Windows_quick_start_cdk.html" />
</head>
<body class="wy-body-for-nav">
@ -92,29 +92,32 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">3. Windows 下使用 Eclipse 开发指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">3.1. 需要的软硬件环境</a></li>
<li class="toctree-l2"><a class="reference internal" href="#eclipse">3.2. 下载 Eclipse 安装包</a></li>
<li class="toctree-l2"><a class="reference internal" href="#bl-mcu-sdk">3.3. 下载 bl_mcu_sdk</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id3">3.4. 配置 eclipse 开发环境</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id4">3.5. 导入 bl_mcu_sdk</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id5">3.6. 硬件连接</a></li>
<li class="toctree-l2"><a class="reference internal" href="#hello-world">3.7. 测试 Hello World 工程</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id6">3.7.1. 打开 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">3.7.2. 编译 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">3.7.3. 烧写 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">3.7.4. 运行 Hello World</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id10">3.7.5. 调试 Hello World</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="Windows_quick_start_cdk.html">2.1. Windows_CDK</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">2.2. Windows_eclipse</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">2.2.1. 需要的软硬件环境</a></li>
<li class="toctree-l3"><a class="reference internal" href="#eclipse">2.2.2. 下载 Eclipse 安装包</a></li>
<li class="toctree-l3"><a class="reference internal" href="#bl-mcu-sdk">2.2.3. 下载 bl_mcu_sdk</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">2.2.4. 配置 eclipse 开发环境</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">2.2.5. 导入 bl_mcu_sdk</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">2.2.6. 硬件连接</a></li>
<li class="toctree-l3"><a class="reference internal" href="#hello-world">2.2.7. 测试 Hello World 工程</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id6">2.2.7.1. 打开 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id7">2.2.7.2. 编译 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id8">2.2.7.3. 烧写 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id9">2.2.7.4. 运行 Hello World</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id10">2.2.7.5. 调试 Hello World</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id11">3.8. 编译烧写不同的目标工程</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">2.2.8. 编译烧写不同的目标工程</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l2"><a class="reference internal" href="Linux_quick_start_ubuntu.html">2.3. Linux</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -196,7 +199,9 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">3. </span>Windows 下使用 Eclipse 开发指南</li>
<li><a href="index.html"><span class="section-number">2. </span>开发环境搭建指南</a> &raquo;</li>
<li><span class="section-number">2.2. </span>Windows 下使用 Eclipse 开发指南</li>
<li class="wy-breadcrumbs-aside">
@ -216,10 +221,10 @@
<div itemprop="articleBody">
<div class="section" id="windows-eclipse">
<h1><span class="section-number">3. </span>Windows 下使用 Eclipse 开发指南<a class="headerlink" href="#windows-eclipse" title="永久链接至标题"></a></h1>
<h1><span class="section-number">2.2. </span>Windows 下使用 Eclipse 开发指南<a class="headerlink" href="#windows-eclipse" title="永久链接至标题"></a></h1>
<p>本文档介绍了如何在 Windows 下使用 eclipse构建 BL702 系列 MCU 的软件开发环境。</p>
<div class="section" id="id1">
<h2><span class="section-number">3.1. </span>需要的软硬件环境<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.1. </span>需要的软硬件环境<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>Eclipse 免安装软件包</p></li>
<li><p>串口助手软件</p></li>
@ -230,13 +235,13 @@
</ul>
</div>
<div class="section" id="eclipse">
<h2><span class="section-number">3.2. </span>下载 Eclipse 安装包<a class="headerlink" href="#eclipse" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.2. </span>下载 Eclipse 安装包<a class="headerlink" href="#eclipse" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>从 Bouffalo Lab 开发者社区下载带有 RISC-V 工具链的 <a class="reference external" href="https://dev.bouffalolab.com/media/upload/download/BouffaloLab_eclipse_x86_64_win.zip">Eclipse https://dev.bouffalolab.com/download</a> 安装包。</p></li>
</ul>
</div>
<div class="section" id="bl-mcu-sdk">
<h2><span class="section-number">3.3. </span>下载 bl_mcu_sdk<a class="headerlink" href="#bl-mcu-sdk" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.3. </span>下载 bl_mcu_sdk<a class="headerlink" href="#bl-mcu-sdk" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>从开源社区下载 <a class="reference external" href="https://gitee.com/bouffalolab/bl_mcu_sdk.git">bl_mcu_sdk</a> 软件开发包。</p></li>
<li><p>可以使用 <code class="docutils literal notranslate"><span class="pre">git</span> <span class="pre">clone</span></code> 或者直接 <code class="docutils literal notranslate"><span class="pre">download</span></code> 的方式下 SDK</p></li>
@ -247,7 +252,7 @@
</td></tr></table></div>
</div>
<div class="section" id="id3">
<h2><span class="section-number">3.4. </span>配置 eclipse 开发环境<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.4. </span>配置 eclipse 开发环境<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<ul>
<li><p>将获取到的 eclipse 压缩包拷贝到您的工作目录,解压 eclipse 压缩包</p></li>
<li><p>进入 eclipse 目录,双击 <code class="docutils literal notranslate"><span class="pre">eclipse.exe</span></code> 启动 eclipse</p></li>
@ -274,7 +279,7 @@
</ul>
</div>
<div class="section" id="id4">
<h2><span class="section-number">3.5. </span>导入 bl_mcu_sdk<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.5. </span>导入 bl_mcu_sdk<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<ul>
<li><p>点击 菜单栏 <code class="docutils literal notranslate"><span class="pre">File-&gt;Import</span></code> ,打开导入项目的配置界面</p>
<div class="figure align-default">
@ -309,22 +314,22 @@
</ul>
</div>
<div class="section" id="id5">
<h2><span class="section-number">3.6. </span>硬件连接<a class="headerlink" href="#id5" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.6. </span>硬件连接<a class="headerlink" href="#id5" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>具体开发板的连接, 请参考 <a class="reference internal" href="connecting_hardware.html#connect-hardware"><span class="std std-ref">硬件连接</span></a> 部分eclipse 环境建议使用 <code class="docutils literal notranslate"><span class="pre">j-link</span></code> 烧写、调试)</p></li>
<li><p>具体开发板的连接, 请参考 <a class="reference internal" href="connecting_hardware.html#connect-hardware"><span class="std std-ref">硬件连接指南</span></a> 部分eclipse 环境建议使用 <code class="docutils literal notranslate"><span class="pre">j-link</span></code> 烧写、调试)</p></li>
<li><p>请确保开发板正确设置后再进行下面的步骤</p></li>
</ul>
</div>
<div class="section" id="hello-world">
<h2><span class="section-number">3.7. </span>测试 Hello World 工程<a class="headerlink" href="#hello-world" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.7. </span>测试 Hello World 工程<a class="headerlink" href="#hello-world" title="永久链接至标题"></a></h2>
<div class="section" id="id6">
<h3><span class="section-number">3.7.1. </span>打开 Hello World<a class="headerlink" href="#id6" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.2.7.1. </span>打开 Hello World<a class="headerlink" href="#id6" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>打开 <code class="docutils literal notranslate"><span class="pre">examples/hellowd/helloworld/main.c</span></code> 文件,即可编辑、修改 <code class="docutils literal notranslate"><span class="pre">helloworld</span></code> 测试 demo 的代码,若修改了,请保存后在执行编译</p></li>
</ul>
</div>
<div class="section" id="id7">
<h3><span class="section-number">3.7.2. </span>编译 Hello World<a class="headerlink" href="#id7" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.2.7.2. </span>编译 Hello World<a class="headerlink" href="#id7" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>双击 <code class="docutils literal notranslate"><span class="pre">bl_make</span></code> 即可编 helloworld 工程</p></li>
<li><p>编译成功后 <code class="docutils literal notranslate"><span class="pre">Console</span></code> 窗口可以看到如下图所示的 log 信息</p></li>
@ -334,7 +339,7 @@
</div>
</div>
<div class="section" id="id8">
<h3><span class="section-number">3.7.3. </span>烧写 Hello World<a class="headerlink" href="#id8" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.2.7.3. </span>烧写 Hello World<a class="headerlink" href="#id8" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>双击 <code class="docutils literal notranslate"><span class="pre">download</span></code> 即可烧写 helloworld 工程 <code class="docutils literal notranslate"><span class="pre">bin</span></code> 文件到芯片中</p></li>
<li><p>下载成功后 <code class="docutils literal notranslate"><span class="pre">Console</span></code> 窗口可以看到如下图所示的 log 信息</p></li>
@ -344,7 +349,7 @@
</div>
</div>
<div class="section" id="id9">
<h3><span class="section-number">3.7.4. </span>运行 Hello World<a class="headerlink" href="#id9" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.2.7.4. </span>运行 Hello World<a class="headerlink" href="#id9" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>将开发板的 <code class="docutils literal notranslate"><span class="pre">TXD0</span></code><code class="docutils literal notranslate"><span class="pre">RXD0</span></code><code class="docutils literal notranslate"><span class="pre">GND</span></code> 引脚使用杜邦线连接到 USB-TTL 串口模块,将串口模块插入 PC 主机, 使用任意的串口助手软件打开串口</p></li>
<li><p>烧写成功后,按下板子上的 <code class="docutils literal notranslate"><span class="pre">rst</span></code> 按键,如果下载正确,即可在串口助手软件中看到如下图所示的 log 信息。</p></li>
@ -354,7 +359,7 @@
</div>
</div>
<div class="section" id="id10">
<h3><span class="section-number">3.7.5. </span>调试 Hello World<a class="headerlink" href="#id10" title="永久链接至标题"></a></h3>
<h3><span class="section-number">2.2.7.5. </span>调试 Hello World<a class="headerlink" href="#id10" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>点击 eclipse 工具栏中的 <code class="docutils literal notranslate"><span class="pre">Debug</span></code> 按钮,进入 debug 配置窗口</p></li>
<li><p>选择 <code class="docutils literal notranslate"><span class="pre">GDB</span> <span class="pre">SEGGER</span> <span class="pre">J-Link</span> <span class="pre">Debugging-&gt;Jlink_bl_mcu_sdk</span></code> Debug 配置,在 <code class="docutils literal notranslate"><span class="pre">C/C++</span> <span class="pre">Application:</span></code> 选项中选择需要调试的 <code class="docutils literal notranslate"><span class="pre">.elf</span></code> 文件</p></li>
@ -373,7 +378,7 @@
</div>
</div>
<div class="section" id="id11">
<h2><span class="section-number">3.8. </span>编译烧写不同的目标工程<a class="headerlink" href="#id11" title="永久链接至标题"></a></h2>
<h2><span class="section-number">2.2.8. </span>编译烧写不同的目标工程<a class="headerlink" href="#id11" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>当右击 <code class="docutils literal notranslate"><span class="pre">bl_make</span></code> 按钮,点击 <code class="docutils literal notranslate"><span class="pre">Edit</span></code> 后,会弹出更换目标工程的配置界面,如下图所示</p></li>
</ul>
@ -394,8 +399,8 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Linux_quick_start_ubuntu.html" class="btn btn-neutral float-right" title="4. Linux OR WSL 环境开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Windows_quick_start_cdk.html" class="btn btn-neutral float-left" title="2. Windows 下使用 CDK (类 MDK Keil)开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="Linux_quick_start_ubuntu.html" class="btn btn-neutral float-right" title="2.3. Linux OR WSL 环境开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Windows_quick_start_cdk.html" class="btn btn-neutral float-left" title="2.1. Windows 下使用 CDK (类 MDK Keil)开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5. BLDevCube 烧录工具指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<title>3. BLDevCube 烧录工具指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
@ -39,8 +39,8 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="6. 基于 cmake 框架构建自己的工程" href="cmake_quick_start.html" />
<link rel="prev" title="4. Linux OR WSL 环境开发指南" href="Linux_quick_start_ubuntu.html" />
<link rel="next" title="4. 基于 cmake 框架新建工程指南" href="cmake_quick_start.html" />
<link rel="prev" title="2.3. Linux OR WSL 环境开发指南" href="Linux_quick_start_ubuntu.html" />
</head>
<body class="wy-body-for-nav">
@ -92,21 +92,19 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">5. BLDevCube 烧录工具指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#bouffalo-lab-dev-cube">5.1. 下载安装 Bouffalo Lab Dev Cube 工具</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">5.2. 配置工具下载方式</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#uart">5.2.1. 使用 UART 下载程序</a></li>
<li class="toctree-l3"><a class="reference internal" href="#openocd">5.2.2. 使用 Openocd 下载程序</a></li>
<li class="toctree-l3"><a class="reference internal" href="#jlink">5.2.3. 使用 Jlink 下载程序</a></li>
<li class="toctree-l1"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">3. BLDevCube 烧录工具指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#bouffalo-lab-dev-cube">3.1. 下载安装 Bouffalo Lab Dev Cube 工具</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">3.2. 配置工具下载方式</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#uart">3.2.1. 使用 UART 下载程序</a></li>
<li class="toctree-l3"><a class="reference internal" href="#openocd">3.2.2. 使用 Openocd 下载程序</a></li>
<li class="toctree-l3"><a class="reference internal" href="#jlink">3.2.3. 使用 Jlink 下载程序</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -188,7 +186,7 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">5. </span>BLDevCube 烧录工具指南</li>
<li><span class="section-number">3. </span>BLDevCube 烧录工具指南</li>
<li class="wy-breadcrumbs-aside">
@ -208,10 +206,10 @@
<div itemprop="articleBody">
<div class="section" id="bldevcube">
<span id="bl-dev-cube"></span><h1><span class="section-number">5. </span>BLDevCube 烧录工具指南<a class="headerlink" href="#bldevcube" title="永久链接至标题"></a></h1>
<span id="bl-dev-cube"></span><h1><span class="section-number">3. </span>BLDevCube 烧录工具指南<a class="headerlink" href="#bldevcube" title="永久链接至标题"></a></h1>
<p>本文档将简要介绍一下如何使用 Bouffalo Lab Dev Cube 集成开发工具进行代码的烧写,更多详情请参考 <a class="reference external" href="https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf">BLDevCube 用户手册</a></p>
<div class="section" id="bouffalo-lab-dev-cube">
<h2><span class="section-number">5.1. </span>下载安装 Bouffalo Lab Dev Cube 工具<a class="headerlink" href="#bouffalo-lab-dev-cube" title="永久链接至标题"></a></h2>
<h2><span class="section-number">3.1. </span>下载安装 Bouffalo Lab Dev Cube 工具<a class="headerlink" href="#bouffalo-lab-dev-cube" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>从博流智能开发者社区下载适合您操作系统的版本,下载地址:<a class="reference external" href="https://dev.bouffalolab.com/download">https://dev.bouffalolab.com/download</a> ,从这里可以获取到最新版本工具</p>
<ul>
@ -222,7 +220,7 @@
</ul>
</div>
<div class="section" id="id2">
<h2><span class="section-number">5.2. </span>配置工具下载方式<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<h2><span class="section-number">3.2. </span>配置工具下载方式<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>双击解压后文件夹的 <code class="docutils literal notranslate"><span class="pre">BLDevCube.exe</span></code>, 在 <code class="docutils literal notranslate"><span class="pre">Chip</span> <span class="pre">Selection</span></code> 对话框中,在 <code class="docutils literal notranslate"><span class="pre">Chip</span> <span class="pre">Type</span></code> 的下拉框中,选择您要开发的对应芯片的型号,点击 <code class="docutils literal notranslate"><span class="pre">Finish</span></code> 进入 <code class="docutils literal notranslate"><span class="pre">Dev</span> <span class="pre">Cube</span></code> 主界面</p></li>
<li><p>进入主界面后在上方的菜单栏 <code class="docutils literal notranslate"><span class="pre">View</span></code> 标签下选择 <code class="docutils literal notranslate"><span class="pre">MCU</span></code> 下载方式,进入 MCU 程序下载主界面</p></li>
@ -237,7 +235,7 @@
<li><p>点击 <code class="docutils literal notranslate"><span class="pre">click</span> <span class="pre">here</span> <span class="pre">to</span> <span class="pre">show</span> <span class="pre">advanced</span> <span class="pre">options</span></code> 时,会展开高级镜像配置,通常情况下保持默认配置即可;需要注意的是, <code class="docutils literal notranslate"><span class="pre">Flash</span> <span class="pre">Clock</span></code> 会同时影响到 Flash 和 PSRAM 的时钟频率,在需要使用 PSRAM 的情况下可以适当提高该时钟频率以获得更好的性能</p></li>
</ul>
<div class="section" id="uart">
<h3><span class="section-number">5.2.1. </span>使用 UART 下载程序<a class="headerlink" href="#uart" title="永久链接至标题"></a></h3>
<h3><span class="section-number">3.2.1. </span>使用 UART 下载程序<a class="headerlink" href="#uart" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">COM</span> <span class="pre">Port</span></code> 栏用于使用 UART 进行下载时,选择与芯片连接的 COM 口号,可以点击 Refresh 按钮进行 COM 号的刷新</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Uart</span> <span class="pre">Speed</span></code> 栏用于使用 UART 下时,配置合适的波特率,默认 2M</p></li>
@ -258,7 +256,7 @@
</div>
</div>
<div class="section" id="openocd">
<h3><span class="section-number">5.2.2. </span>使用 Openocd 下载程序<a class="headerlink" href="#openocd" title="永久链接至标题"></a></h3>
<h3><span class="section-number">3.2.2. </span>使用 Openocd 下载程序<a class="headerlink" href="#openocd" title="永久链接至标题"></a></h3>
<ul>
<li><p>使用 openocd 下载程序与使用串口下载时工具配置基本相同,只需要将 <code class="docutils literal notranslate"><span class="pre">Interface</span></code> 切换成 <code class="docutils literal notranslate"><span class="pre">Openocd</span></code> 即可</p></li>
<li><p>硬件连接需要更改为支持 Openocd 的调试器连接(本教程以 Sipeed RV Debugger 为例):</p>
@ -306,7 +304,7 @@
</ul>
</div>
<div class="section" id="jlink">
<h3><span class="section-number">5.2.3. </span>使用 Jlink 下载程序<a class="headerlink" href="#jlink" title="永久链接至标题"></a></h3>
<h3><span class="section-number">3.2.3. </span>使用 Jlink 下载程序<a class="headerlink" href="#jlink" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>使用 Jlink 下载程序与使用 Openocd 下载时工具配置基本相同,只需要将 <code class="docutils literal notranslate"><span class="pre">Interface</span></code> 切换成 <code class="docutils literal notranslate"><span class="pre">Jlink</span></code> 即可</p></li>
<li><p>硬件连接需要更改为使用 Jlink 连接(本教程以 Jlink V11 为例,建议使用 Jlink V10 以上版本):</p>
@ -338,8 +336,8 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="cmake_quick_start.html" class="btn btn-neutral float-right" title="6. 基于 cmake 框架构建自己的工程" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Linux_quick_start_ubuntu.html" class="btn btn-neutral float-left" title="4. Linux OR WSL 环境开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="cmake_quick_start.html" class="btn btn-neutral float-right" title="4. 基于 cmake 框架新建工程指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Linux_quick_start_ubuntu.html" class="btn btn-neutral float-left" title="2.3. Linux OR WSL 环境开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>6. 基于 cmake 框架构建自己的工程 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<title>4. 基于 cmake 框架新建工程指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
@ -39,8 +39,8 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="7. 硬件连接" href="connecting_hardware.html" />
<link rel="prev" title="5. BLDevCube 烧录工具指南" href="bl_dev_cube.html" />
<link rel="next" title="5. 硬件连接指南" href="connecting_hardware.html" />
<link rel="prev" title="3. BLDevCube 烧录工具指南" href="bl_dev_cube.html" />
</head>
<body class="wy-body-for-nav">
@ -92,20 +92,19 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">6. 基于 cmake 框架构建自己的工程</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#demo">6.1. 添加demo工程</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id1">6.2. 添加demo工程+依赖源文件</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">6.3. 添加demo工程+依赖库</a></li>
<li class="toctree-l2"><a class="reference internal" href="#demo-gcc-option">6.4. 添加demo工程+私有编译选项gcc option</a></li>
<li class="toctree-l2"><a class="reference internal" href="#demo-ld">6.5. 添加demo工程+私有链接脚本ld</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id3">6.6. 添加demo工程+依赖源文件+依赖库</a></li>
<li class="toctree-l1"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">4. 基于 cmake 框架新建工程指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#examples">4.1. examples 的目录结构</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id1">4.2. 添加单个源文件工程</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">4.3. 添加多个源文件工程</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id3">4.4. 添加有依赖库的新工程</a></li>
<li class="toctree-l2"><a class="reference internal" href="#gcc-option">4.5. 添加新工程并设置私有编译选项gcc option</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ld">4.6. 添加新工程并设置私有链接脚本ld</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id4">4.7. 添加新工程并其依赖的源文件和库文件</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -187,7 +186,7 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">6. </span>基于 cmake 框架构建自己的工程</li>
<li><span class="section-number">4. </span>基于 cmake 框架新建工程指南</li>
<li class="wy-breadcrumbs-aside">
@ -207,24 +206,210 @@
<div itemprop="articleBody">
<div class="section" id="cmake">
<h1><span class="section-number">6. </span>基于 cmake 框架构建自己的工程<a class="headerlink" href="#cmake" title="永久链接至标题"></a></h1>
<div class="section" id="demo">
<h2><span class="section-number">6.1. </span>添加demo工程<a class="headerlink" href="#demo" title="永久链接至标题"></a></h2>
<h1><span class="section-number">4. </span>基于 cmake 框架新建工程指南<a class="headerlink" href="#cmake" title="永久链接至标题"></a></h1>
<p>本文档将介绍一下如何基于本 SDK 新建一个全新的项目</p>
<div class="section" id="examples">
<h2><span class="section-number">4.1. </span>examples 的目录结构<a class="headerlink" href="#examples" title="永久链接至标题"></a></h2>
<p><code class="docutils literal notranslate"><span class="pre">bl_mcu_sdk/examples</span></code> 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 <code class="docutils literal notranslate"><span class="pre">CMakeList.txt</span></code> 以及该 case 相关的源码</p>
</div>
<div class="section" id="id1">
<h2><span class="section-number">6.2. </span>添加demo工程+依赖源文件<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<h2><span class="section-number">4.2. </span>添加单个源文件工程<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>该源文件必须包含 c 程序入口,通常为 <code class="docutils literal notranslate"><span class="pre">main</span></code> 函数,源文件可以不叫 <code class="docutils literal notranslate"><span class="pre">main.c</span></code></p>
</div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">examples</span></code> 目录下新建一个 <code class="docutils literal notranslate"><span class="pre">my_case</span></code> 目录,用于存放你的 case 集</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">my_case</span></code> 目录中新建你要测试 case 的名称,比如新建一个 <code class="docutils literal notranslate"><span class="pre">gpio_case</span></code> 目录</p></li>
<li><p>然后在 <code class="docutils literal notranslate"><span class="pre">gpio_case</span></code> 目录中添加 <code class="docutils literal notranslate"><span class="pre">main.c</span></code><code class="docutils literal notranslate"><span class="pre">CMakeLists.txt</span></code> 文件即可</p></li>
</ul>
<p>目录结构如下:</p>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ └──main.c
└── xxxx_case
</pre></div>
</td></tr></table></div>
<p><cite>CMakeLists.txt</cite>:</p>
<div class="highlight-cmake notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="hll"><span class="nb">set</span><span class="p">(</span><span class="s">mains</span> <span class="s">main.c</span><span class="p">)</span>
</span><span class="hll"><span class="nb">generate_bin</span><span class="p">()</span>
</span></pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>在 main.c 中编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
</ul>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_case
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="id2">
<h2><span class="section-number">6.3. </span>添加demo工程+依赖库<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<h2><span class="section-number">4.3. </span>添加多个源文件工程<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>其中一个源文件必须包含 c 程序入口,通常为 <code class="docutils literal notranslate"><span class="pre">main</span></code> 函数,该源文件可以不叫 <code class="docutils literal notranslate"><span class="pre">main.c</span></code>。该源文件依赖其他源文件。</p>
</div>
<div class="section" id="demo-gcc-option">
<h2><span class="section-number">6.4. </span>添加demo工程+私有编译选项gcc option<a class="headerlink" href="#demo-gcc-option" title="永久链接至标题"></a></h2>
</div>
<div class="section" id="demo-ld">
<h2><span class="section-number">6.5. </span>添加demo工程+私有链接脚本ld<a class="headerlink" href="#demo-ld" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>添加多源文件工程的步骤与添加单个源文件工程基本步骤一致</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">gpio_case</span></code> 目录中添加 <code class="docutils literal notranslate"><span class="pre">test1.c</span></code><code class="docutils literal notranslate"><span class="pre">test1.h</span></code><code class="docutils literal notranslate"><span class="pre">test2.c</span></code><code class="docutils literal notranslate"><span class="pre">test2.h</span></code> 等需要依赖的源文件和头文件即可</p></li>
</ul>
<p>目录结构如下:</p>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ ├──test1.c
│ ├──test1.h
│ ├──test2.c
│ ├──test2.h
│ └──main.c
└── xxxx_case
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>那么此时 <code class="docutils literal notranslate"><span class="pre">CMakeLists.txt</span></code> 文件需要添加相应的依赖源文件,内容如下所示:</p></li>
</ul>
<p><cite>CMakeLists.txt</cite>:</p>
<div class="highlight-cmake notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="s">mains</span> <span class="s">main.c</span><span class="p">)</span>
<span class="hll"><span class="nb">set</span><span class="p">(</span><span class="s">TARGET_REQUIRED_SRCS</span> <span class="s">test1.c</span> <span class="s">test2.c</span><span class="p">)</span>
</span><span class="nb">generate_bin</span><span class="p">()</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
</ul>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_case
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="id3">
<h2><span class="section-number">6.6. </span>添加demo工程+依赖源文件+依赖库<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<h2><span class="section-number">4.4. </span>添加有依赖库的新工程<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>添加有依赖库的新工程的步骤与添加单个源文件工程基本步骤一致</p></li>
<li><p>如使用的依赖库在本 SDK 中已存在,那么就只需要修改 CMakeLists.txt 即可
- 如使用的依赖库不存在则需要自行添加,详见后续说明</p></li>
</ul>
<p>已存在的情况下,目录结构如下:</p>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ └──main.c
└── xxxx_case
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>那么此时 <code class="docutils literal notranslate"><span class="pre">CMakeLists.txt</span></code> 文件需要添加相应的依赖库文件即可,比如我们添加一个 FreeRTOS 组件库,内容如下所示:</p></li>
</ul>
<p><cite>CMakeLists.txt</cite>:</p>
<div class="highlight-cmake notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="hll"><span class="nb">set</span><span class="p">(</span><span class="s">TARGET_REQUIRED_LIBS</span> <span class="s">freertos</span><span class="p">)</span>
</span><span class="nb">set</span><span class="p">(</span><span class="s">mains</span> <span class="s">main.c</span><span class="p">)</span>
<span class="nb">generate_bin</span><span class="p">()</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
</ul>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_case <span class="nv">SUPPORT_FREERTOS</span><span class="o">=</span>y
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="gcc-option">
<h2><span class="section-number">4.5. </span>添加新工程并设置私有编译选项gcc option<a class="headerlink" href="#gcc-option" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>添加新工程步骤与添加单源文件工程基本一致</p></li>
<li><p>主要是在修改 CMakeLists.txt 文件,添加私有编译选项</p></li>
</ul>
<p><cite>CMakeLists.txt</cite>:</p>
<div class="highlight-cmake notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">set</span><span class="p">(</span><span class="s">mains</span> <span class="s">main.c</span><span class="p">)</span>
<span class="hll"><span class="nb">set</span><span class="p">(</span><span class="s">TARGET_REQUIRED_PRIVATE_OPTIONS</span> <span class="s">-Ofast</span><span class="p">)</span>
</span><span class="nb">generate_bin</span><span class="p">()</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
</ul>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_case
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="ld">
<h2><span class="section-number">4.6. </span>添加新工程并设置私有链接脚本ld<a class="headerlink" href="#ld" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>添加新工程步骤与添加单源文件工程基本一致</p></li>
<li><p>添加私有链接脚本文件,如 <code class="docutils literal notranslate"><span class="pre">gpio_test_case.ld</span></code></p></li>
</ul>
<p>目录结构如下:</p>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>bl_mcu_sdk
├── examples
├── my_case
├── gpio_case
│ ├──CMakeLists.txt
│ ├──gpio_test_case.ld
│ └──main.c
└── xxxx_case
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>修改 CMakeLists.txt 文件,添加私有链接脚本设置</p></li>
</ul>
<p><cite>CMakeLists.txt</cite>:</p>
<div class="highlight-cmake notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="hll"><span class="nb">set</span><span class="p">(</span><span class="s">LINKER_SCRIPT</span> <span class="o">${</span><span class="nv">CMAKE_CURRENT_SOURCE_DIR</span><span class="o">}</span><span class="s">/gpio_test_case.ld</span><span class="p">)</span>
</span><span class="nb">set</span><span class="p">(</span><span class="s">mains</span> <span class="s">main.c</span><span class="p">)</span>
<span class="nb">generate_bin</span><span class="p">()</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
</ul>
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span>make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>gpio_case
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="id4">
<h2><span class="section-number">4.7. </span>添加新工程并其依赖的源文件和库文件<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
</div>
</div>
@ -234,8 +419,8 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="connecting_hardware.html" class="btn btn-neutral float-right" title="7. 硬件连接" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="bl_dev_cube.html" class="btn btn-neutral float-left" title="5. BLDevCube 烧录工具指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="connecting_hardware.html" class="btn btn-neutral float-right" title="5. 硬件连接指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="bl_dev_cube.html" class="btn btn-neutral float-left" title="3. BLDevCube 烧录工具指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>7. 硬件连接 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<title>5. 硬件连接指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
@ -40,7 +40,7 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="1. API 分层模型" href="../api_reference/api_structure.html" />
<link rel="prev" title="6. 基于 cmake 框架构建自己的工程" href="cmake_quick_start.html" />
<link rel="prev" title="4. 基于 cmake 框架新建工程指南" href="cmake_quick_start.html" />
</head>
<body class="wy-body-for-nav">
@ -92,21 +92,19 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">7. 硬件连接</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#bl706-iot">7.1. BL706_IOT 开发板</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#ck-link">7.1.1. 使用 CK-Link 烧写、调试连接方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="#j-link">7.1.2. 使用 J-Link 烧写、调试连接方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">7.1.3. 使用串口烧写程序连接方法</a></li>
<li class="toctree-l1"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">5. 硬件连接指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#bl706-iot">5.1. BL706_IOT 开发板</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#ck-link">5.1.1. 使用 CK-Link 烧写、调试连接方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="#j-link">5.1.2. 使用 J-Link 烧写、调试连接方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">5.1.3. 使用串口烧写程序连接方法</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#bl702-avb">7.2. BL702_AVB 开发板</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id3">7.2.1. 使用 CK-Link 烧写、调试连接方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">7.2.2. 使用串口烧写程序连接方法</a></li>
<li class="toctree-l2"><a class="reference internal" href="#bl702-avb">5.2. BL702_AVB 开发板</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id3">5.2.1. 使用 CK-Link 烧写、调试连接方法</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">5.2.2. 使用串口烧写程序连接方法</a></li>
</ul>
</li>
</ul>
@ -192,7 +190,7 @@
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">7. </span>硬件连接</li>
<li><span class="section-number">5. </span>硬件连接指南</li>
<li class="wy-breadcrumbs-aside">
@ -212,12 +210,12 @@
<div itemprop="articleBody">
<div class="section" id="connect-hardware">
<span id="id1"></span><h1><span class="section-number">7. </span>硬件连接<a class="headerlink" href="#connect-hardware" title="永久链接至标题"></a></h1>
<span id="id1"></span><h1><span class="section-number">5. </span>硬件连接指南<a class="headerlink" href="#connect-hardware" title="永久链接至标题"></a></h1>
<p>本文档介绍了如何连接 BL70x 系列 MCU 的开发板</p>
<div class="section" id="bl706-iot">
<h2><span class="section-number">7.1. </span>BL706_IOT 开发板<a class="headerlink" href="#bl706-iot" title="永久链接至标题"></a></h2>
<h2><span class="section-number">5.1. </span>BL706_IOT 开发板<a class="headerlink" href="#bl706-iot" title="永久链接至标题"></a></h2>
<div class="section" id="ck-link">
<h3><span class="section-number">7.1.1. </span>使用 CK-Link 烧写、调试连接方法<a class="headerlink" href="#ck-link" title="永久链接至标题"></a></h3>
<h3><span class="section-number">5.1.1. </span>使用 CK-Link 烧写、调试连接方法<a class="headerlink" href="#ck-link" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>将 CK-Link USB 接口使用合适的 USB 数据线正确连接到 PC 主机</p></li>
<li><p>将 Iot 开发板的 <code class="docutils literal notranslate"><span class="pre">HD3</span></code> 组的标准 <code class="docutils literal notranslate"><span class="pre">JTAG</span></code> 引脚使用杜邦线与 <code class="docutils literal notranslate"><span class="pre">CK-Link</span></code> 对应的 <code class="docutils literal notranslate"><span class="pre">JTAG</span></code> 引脚连接起来</p></li>
@ -239,7 +237,7 @@
</div>
</div>
<div class="section" id="j-link">
<h3><span class="section-number">7.1.2. </span>使用 J-Link 烧写、调试连接方法<a class="headerlink" href="#j-link" title="永久链接至标题"></a></h3>
<h3><span class="section-number">5.1.2. </span>使用 J-Link 烧写、调试连接方法<a class="headerlink" href="#j-link" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>将 j-link 的 USB 接口使用合适的 USB 数据线正确连接到 PC 主机</p></li>
<li><p>将 Iot 开发板的 <code class="docutils literal notranslate"><span class="pre">HD3</span></code> 组的标准 <code class="docutils literal notranslate"><span class="pre">JTAG</span></code> 引脚使用杜邦线与 <code class="docutils literal notranslate"><span class="pre">j-link</span></code> 对应的 <code class="docutils literal notranslate"><span class="pre">JTAG</span></code> 引脚连接起来</p></li>
@ -261,7 +259,7 @@
</div>
</div>
<div class="section" id="id2">
<h3><span class="section-number">7.1.3. </span>使用串口烧写程序连接方法<a class="headerlink" href="#id2" title="永久链接至标题"></a></h3>
<h3><span class="section-number">5.1.3. </span>使用串口烧写程序连接方法<a class="headerlink" href="#id2" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p>使用串口烧写前,请确保正确安装了 <code class="docutils literal notranslate"><span class="pre">Bouffalo</span> <span class="pre">Lab</span> <span class="pre">Dev</span> <span class="pre">Cube</span></code> 或命令行烧写工具</p>
<ul>
@ -287,15 +285,15 @@
</div>
</div>
<div class="section" id="bl702-avb">
<h2><span class="section-number">7.2. </span>BL702_AVB 开发板<a class="headerlink" href="#bl702-avb" title="永久链接至标题"></a></h2>
<h2><span class="section-number">5.2. </span>BL702_AVB 开发板<a class="headerlink" href="#bl702-avb" title="永久链接至标题"></a></h2>
<div class="section" id="id3">
<h3><span class="section-number">7.2.1. </span>使用 CK-Link 烧写、调试连接方法<a class="headerlink" href="#id3" title="永久链接至标题"></a></h3>
<h3><span class="section-number">5.2.1. </span>使用 CK-Link 烧写、调试连接方法<a class="headerlink" href="#id3" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">TO</span> <span class="pre">DO</span></code></p></li>
</ul>
</div>
<div class="section" id="id4">
<h3><span class="section-number">7.2.2. </span>使用串口烧写程序连接方法<a class="headerlink" href="#id4" title="永久链接至标题"></a></h3>
<h3><span class="section-number">5.2.2. </span>使用串口烧写程序连接方法<a class="headerlink" href="#id4" title="永久链接至标题"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">TO</span> <span class="pre">DO</span></code></p></li>
</ul>
@ -310,7 +308,7 @@
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../api_reference/api_structure.html" class="btn btn-neutral float-right" title="1. API 分层模型" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="cmake_quick_start.html" class="btn btn-neutral float-left" title="6. 基于 cmake 框架构建自己的工程" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="cmake_quick_start.html" class="btn btn-neutral float-left" title="4. 基于 cmake 框架新建工程指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>

View file

@ -39,7 +39,7 @@
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="2. Windows 下使用 CDK (类 MDK Keil)开发指南" href="Windows_quick_start_cdk.html" />
<link rel="next" title="2. 开发环境搭建指南" href="index.html" />
<link rel="prev" title="BL MCU SDK 开发指南" href="../index.html" />
</head>
@ -96,12 +96,10 @@
<li class="toctree-l2"><a class="reference internal" href="#id3">1.2. 软件环境准备</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -225,13 +223,13 @@
<p class="caption"><span class="caption-text">BL706_AVB</span><a class="headerlink" href="#id5" title="永久链接至图片"></a></p>
</div>
<ul class="simple">
<li><p>一个支持标准 JTAG 功能的调试器:</p></li>
<li><p>一个支持标准 JTAG 功能的调试器,下面几款调试器中选择一款与开发环境适合即可</p></li>
</ul>
<blockquote>
<div><ul class="simple">
<li><p>CK-Link 仿真器or</p></li>
<li><p>Jlink V11 仿真器or</p></li>
<li><p>Sipeed USB-JTAG/TTL 调试器or</p></li>
<li><p>CK-Link 仿真器</p></li>
<li><p>Jlink V11 仿真器</p></li>
<li><p>Sipeed USB-JTAG/TTL 调试器</p></li>
<li><p>Bouffalo Lab Debugger 调试器</p></li>
</ul>
</div></blockquote>
@ -256,7 +254,7 @@
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Windows_quick_start_cdk.html" class="btn btn-neutral float-right" title="2. Windows 下使用 CDK (类 MDK Keil)开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="index.html" class="btn btn-neutral float-right" title="2. 开发环境搭建指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="../index.html" class="btn btn-neutral float-left" title="BL MCU SDK 开发指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>

View file

@ -0,0 +1,276 @@
<!DOCTYPE html>
<html class="writer-html5" lang="zh-CN" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2. 开发环境搭建指南 &mdash; BL_MCU_SDK 开发指南 0.2 文档</title>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="next" title="2.1. Windows 下使用 CDK (类 MDK Keil)开发指南" href="Windows_quick_start_cdk.html" />
<link rel="prev" title="1. 开发前的准备" href="get_started.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> BL_MCU_SDK 开发指南
</a>
<div class="version">
0.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">2. 开发环境搭建指南</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Windows_quick_start_cdk.html">2.1. Windows_CDK</a></li>
<li class="toctree-l2"><a class="reference internal" href="Windows_quick_start_eclipse.html">2.2. Windows_eclipse</a></li>
<li class="toctree-l2"><a class="reference internal" href="Linux_quick_start_ubuntu.html">2.3. Linux</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_structure.html">1. API 分层模型</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_clock.html">2. 时钟树</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_gpio.html">3. GPIO 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_uart.html">4. UART 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_pwm.html">5. PWM 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_dma.html">6. DMA 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_i2c.html">7. I2C 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_spi.html">8. SPI 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_adc.html">9. ADC 设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../api_reference/api_dac.html">10. DAC 设备</a></li>
</ul>
<p class="caption"><span class="caption-text">基础外设例程</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/blink_demo.html">1. GPIO 输出 - 流水灯</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/button_demo.html">2. GPIO 中断 - 按键检测</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/breath_pwm_demo.html">3. PWM - 呼吸灯</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/uart_loopback_demo.html">4. UART - 数据自收发</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/mtimer_demo.html">5. MTIMER - 内核定时器</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/dma_m2m_demo.html">6. DMA - RAM间数据搬运</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/i2c_eeprom_demo.html">7. I2C - AT24CXX 读写</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/spi_lcd_demo.html">8. SPI - TFT LCD 显示</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/basic%20samples/adc_key_demo.html">9. ADC - 按键检测电压</a></li>
</ul>
<p class="caption"><span class="caption-text">进阶例程</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/shell_demo.html">1. SHELL 命令行调试</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/fatfs_demo.html">2. FATFS 文件系统读写</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/lowpower_demo.html">3. LowPower 低功耗评估</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/ble_scan_demo.html">4. BLE 客户端和服务端互连</a></li>
<li class="toctree-l1"><a class="reference internal" href="../samples/advance%20samples/boot2_iap_info.html">5. BOOT2 IAP</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">BL_MCU_SDK 开发指南</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">2. </span>开发环境搭建指南</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/get_started/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="get-started-index">
<span id="id1"></span><h1><span class="section-number">2. </span>开发环境搭建指南<a class="headerlink" href="#get-started-index" title="永久链接至标题"></a></h1>
<p>在正式开发前,请先根据您的环境,搭建好合适的开发环境,具体步骤如下:</p>
<div class="toctree-wrapper compound">
</div>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 34%" />
<col style="width: 33%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><a class="reference external" href="Windows_quick_start_cdk.html"><img alt="cdk-logo" src="../_images/windows_cdk_logo.png" /></a></p></td>
<td><p><a class="reference external" href="Windows_quick_start_eclipse.html"><img alt="eclipse-logo" src="../_images/windows_eclipse_logo.png" /></a></p></td>
<td><p><a class="reference external" href="Linux_quick_start_ubuntu.html"><img alt="linux-logo" src="../_images/Linux_logo.png" /></a></p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="Windows_quick_start_cdk.html">Windows_CDK</a></p></td>
<td><p><a class="reference external" href="Windows_quick_start_eclipse.html">Windows_eclipse</a></p></td>
<td><p><a class="reference external" href="Linux_quick_start_ubuntu.html">Linux</a></p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Windows_quick_start_cdk.html" class="btn btn-neutral float-right" title="2.1. Windows 下使用 CDK (类 MDK Keil)开发指南" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="get_started.html" class="btn btn-neutral float-left" title="1. 开发前的准备" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; 版权所有 2021, BouffaloLab Co., Ltd.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -91,12 +91,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -207,12 +205,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
</div>
<div class="toctree-wrapper compound">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -210,9 +208,7 @@
<div class="section" id="ble">
<h1><span class="section-number">4. </span>BLE 客户端和服务端互连<a class="headerlink" href="#ble" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本 demo 基于 <strong>bl702</strong> 演示 <strong>ble server</strong><strong>ble client</strong> 连接和数据收发。</p>
</div></blockquote>
<p>本 demo 基于 <strong>bl702</strong> 演示 <strong>ble server</strong><strong>ble client</strong> 连接和数据收发。</p>
<div class="section" id="id1">
<h2><span class="section-number">4.1. </span>准备工具<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<ul class="simple">
@ -418,9 +414,7 @@
</td></tr></table></div>
<ul>
<li><p><strong>烧录</strong></p>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">使用bouffalo_dev_cube烧录代码</span></code></p>
</div></blockquote>
<p>详见 <a class="reference internal" href="../../get_started/bl_dev_cube.html#bl-dev-cube"><span class="std std-ref">BLDevCube 烧录工具指南</span></a></p>
</li>
</ul>
</div>

View file

@ -91,12 +91,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -203,7 +201,7 @@
<div class="section" id="boot2-iap">
<h1><span class="section-number">5. </span>BOOT2 IAP<a class="headerlink" href="#boot2-iap" title="永久链接至标题"></a></h1>
<p>IAP 是 In Application Programming 的首字母缩写IAP 是用户自己的程序在运行过程中对 User Flash的部分区域进行烧写
<p>IAP 是 In Application Programming 的首字母缩写IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,
目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。</p>
<p>通常在用户需要实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,
第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如 USB、USART )接收程序或数据,
@ -222,7 +220,7 @@
</div>
<div class="section" id="id2">
<h2><span class="section-number">5.2. </span>实验现象<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<p>使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 <a class="reference external" href="https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf">DevCube用户手册</a> &lt;IAP程序下载&gt;章节。</p>
<p>使用 Dev Cube 完成 IAP 功能的具体步骤,请参阅 <a class="reference external" href="https://dev.bouffalolab.com/media/upload/doc/DevCube%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cv1.2.pdf">DevCube用户手册</a> &lt;IAP 程序下载&gt;章节。</p>
</div>
</div>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -133,7 +131,7 @@
<li class="toctree-l2"><a class="reference internal" href="#id2">3.2. <strong>低功耗示例测试方法</strong></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id3">3.2.1. <strong>编译低功耗示例代码</strong></a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">3.2.2. <strong>准备低功耗测试所需的硬件环境</strong></a></li>
<li class="toctree-l3"><a class="reference internal" href="#xshell">3.2.3. <strong>使用Xshell开始评估低功耗性能</strong></a></li>
<li class="toctree-l3"><a class="reference internal" href="#xshell">3.2.3. <strong>使用 Xshell 开始评估低功耗性能</strong></a></li>
</ul>
</li>
</ul>
@ -213,51 +211,59 @@
<h2><span class="section-number">3.1. </span>简介<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>博流系列芯片拥有丰富的低功耗特性,以适配不同的低功耗应用场合。为了方便用户快速的评测使用 bl 系列 MCU 低功耗性能 bl_mcu_sdk 提供了一套抽象的低功耗接口,将低功耗等级分为四个等级,分别为</p>
<ol class="arabic simple">
<li><p>Running : Running 为代码正常运行时的功耗,由客户应用代码决定功耗。</p></li>
<li><p>WFI WFI 模式,只关闭了 CPU 以节省功耗,当用户退出 WFI 模式的时候程序将会继续运行。</p></li>
<li><p>PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。</p></li>
<li><p>HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU ,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚唤醒。</p></li>
<li><p>Running : Running 为 CPU 正常运行时的功耗,由客户应用代码执行的功能决定功耗。</p></li>
<li><p>WFI WFI 模式,CPU 的 clock 处于被 Gating 状态CPU 停止运行当用户退出WFI模式的时候程序将会继续运行。</p></li>
<li><p>PDS : PDS 模式,关闭了芯片上大多数电源域,同时关闭了 CPU,和 CPU 处于同一个电源域的 ITCMDTCM 等 RAM 不可使用,只有 64K 的 OCTAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用 GPIO 引脚(在 GPIO 电源域没有关闭的情况下)唤醒。</p></li>
<li><p>HBN : HBN 模式,关闭了芯片上绝大多数电源域,关闭了 CPU 以及 64K OCRAM只有位于 AON 域的 4K RAM 可以保存数据,可以通过内部 RTC 进行唤醒,或者使用特定的唤醒引脚(位于 AON 域的引脚)唤醒。</p></li>
</ol>
<p>如下表所示</p>
<table class="docutils align-default">
<p>bl_mcu_sdk 提供了一个简单的低功耗参考示例(bl_mcu_sdk examples/power/lowpower_test/),旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。
在该示例中,外设及 CPU 的时钟选择均是晶振 32M。基于该示例的功耗测量结果如下表所示:</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 21%" />
<col style="width: 21%" />
<col style="width: 21%" />
<col style="width: 37%" />
<col style="width: 14%" />
<col style="width: 14%" />
<col style="width: 14%" />
<col style="width: 25%" />
<col style="width: 32%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>模式</p></th>
<th class="head"><p>参考电流</p></th>
<th class="head"><p>对应基础模式</p></th>
<th class="head"><p>唤醒源</p></th>
<th class="head"><p>备注</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>running</p></td>
<td><p>6.28 mA</p></td>
<td><p>run</p></td>
<tr class="row-even"><td><p>Running</p></td>
<td><p>5.68 mA</p></td>
<td><p>Run</p></td>
<td></td>
<td><p>所有外设时钟都打开</p></td>
</tr>
<tr class="row-odd"><td><p>WFI</p></td>
<td><p>5.14 mA</p></td>
<td><p>3.14 mA</p></td>
<td><p>WFI</p></td>
<td><p>任意中断</p></td>
<td><p>除串口外,其它外设时钟关闭</p></td>
</tr>
<tr class="row-even"><td><p>PDS</p></td>
<td><p>10 uA</p></td>
<td><p>PDS 31</p></td>
<td><p>内部RTC/引脚中断</p></td>
<td><p>64K OCRAM保存数据</p></td>
</tr>
<tr class="row-odd"><td><p>HBN</p></td>
<td><p>1 uA</p></td>
<td><p>HBN 1</p></td>
<td><p>内部RTC/引脚中断</p></td>
<td><p>4K AON RAM保存数据</p></td>
</tr>
</tbody>
</table>
<p>bl_mcu_sdk 提供了一个简单的低功耗参考示例 (bl_mcu_sdk Examples/power/powerTest/) ,旨在帮助用户快速评估低功耗功能,如果需要进一步适配自身的低功耗场景,采取不同的低功耗策略,请查阅相关 datasheet 或者寻找 Boufflao Lab 的技术支持。</p>
<p>上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述, run wfi pds hbn 四种等级的定义简化了原先的 hbn level以及 pds level的设定。</p>
</div></blockquote>
<p>上表中的参考电流是通过示例固件测试得出的。符合 bl70x 系列 MCU 的 spec 的描述run wfi pds hbn 四种等级的定义简化了原先的 hbn level 以及 pds level 的设定。</p>
<p>见 bl702_bl704_bl706_DS_EN_Combo_1.9.pdf page 28</p>
<div class="figure align-default">
<img alt="../../_images/powerTable.png" src="../../_images/powerTable.png" />
@ -267,11 +273,11 @@
<h2><span class="section-number">3.2. </span><strong>低功耗示例测试方法</strong><a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<div class="section" id="id3">
<h3><span class="section-number">3.2.1. </span><strong>编译低功耗示例代码</strong><a class="headerlink" href="#id3" title="永久链接至标题"></a></h3>
<p>在工程目录下键入 <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">APP=lowpower_test</span>&#160; <span class="pre">SUPPORT_SHELL=y</span> <span class="pre">BOARD=bl706_lp</span></code> 完成低功耗示例 bl706 的编译。或者直接使用CDK工程完成编译下载
<p>在工程目录下键入 <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">APP=lowpower_test</span>&#160; <span class="pre">SUPPORT_SHELL=y</span> <span class="pre">BOARD=bl706_lp</span></code> 完成低功耗示例 bl706 的编译。或者直接使用 CDK 工程,完成编译下载
您可以参考本文档《快速开发指南》来获取更多编译烧写的信息。</p>
<p>当编译并烧写成功后连接串口到电脑端并复位芯片Xshell 会出现如下图所示的页面。</p>
<div class="figure align-default">
<img alt="../../_images/xShell页面.png" src="../../_images/xShell页面.png" />
<img alt="../../_images/xShell_lowpower.png" src="../../_images/xShell_lowpower.png" />
</div>
</div>
<div class="section" id="id4">
@ -280,37 +286,37 @@
<li><p>可以串联电流表到电源端的电路板</p></li>
<li><p>电流表</p></li>
<li><p>一台 PC 主机(运行 Windows 或者 Linux 系统)</p></li>
<li><p>TTLUSB</p></li>
<li><p>TTLUSB</p></li>
</ul>
<p>如下图所示,将电流表串联进入 bl706 模组的供电线路通过PC端的串口调试助手软件下发不同的低功耗指令使得 bl706 进入对应的低功耗模式
<p>如下图所示,将电流表串联进入 bl706 模组的供电线路,通过 PC 端的串口调试助手软件,下发不同的低功耗指令,使得 bl706 进入对应的低功耗模式
观察电流表示值,完成评估。</p>
<div class="figure align-default">
<img alt="../../_images/低功耗示意图.png" src="../../_images/低功耗示意图.png" />
<img alt="../../_images/lowpower_arch.png" src="../../_images/lowpower_arch.png" />
</div>
</div>
<div class="section" id="xshell">
<h3><span class="section-number">3.2.3. </span><strong>使用Xshell开始评估低功耗性能</strong><a class="headerlink" href="#xshell" title="永久链接至标题"></a></h3>
<p>用户可以通过在 Xshell输入下述指令进入对应的低功耗模式。</p>
<h3><span class="section-number">3.2.3. </span><strong>使用 Xshell 开始评估低功耗性能</strong><a class="headerlink" href="#xshell" title="永久链接至标题"></a></h3>
<p>用户可以通过在 Xshell 输入下述指令,进入对应的低功耗模式。</p>
<p><code class="docutils literal notranslate"><span class="pre">run</span></code></p>
<ul class="simple">
<li><p>复位芯片之后默认进入run模式没有进入任何低功耗模式芯片实际在运行 while(1); 语句。</p></li>
<li><p>复位芯片之后,默认进入 run 模式,没有进入任何低功耗模式,芯片实际在运行 while(1); 语句。</p></li>
</ul>
<p><code class="docutils literal notranslate"><span class="pre">wfi</span></code></p>
<ul class="simple">
<li><p>进入wfi模式后面不加任何参数进入之后关闭CPU降低功耗</p></li>
<li><p>进入wfi模式后任何中断会唤醒例如uart中断。在Xshell中敲击回车会触发 bl706 UART RX中断因此可以通过此方法唤醒wfi低功耗模式。</p></li>
<li><p>进入 wfi 模式后面不加任何参数进入之后CPU 处于 clock gating 状态,降低功耗</p></li>
<li><p>进入 wfi 模式后,任何中断会唤醒,例如 uart 中断。在 Xshell 中敲击回车会触发 BL706 UART RX 中断,因此可以通过此方法唤醒 wfi 低功耗模式。</p></li>
</ul>
<p><code class="docutils literal notranslate"><span class="pre">pds</span> <span class="pre">sleepTim</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">pds</span> <span class="pre">sleeptime</span></code></p>
<ul class="simple">
<li><p>pds 可以选择带一个 sleepTim 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。</p></li>
<li><p>如果指令包含 sleepTim 参数pds 将会在sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。</p></li>
<li><p>进入低功耗模式后RTC的时钟是32K ,因此 sleepTim 为32768时,表现为睡眠 1S 后唤醒。</p></li>
<li><p>pds 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。</p></li>
<li><p>如果指令包含 sleeptime 参数pds 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。</p></li>
<li><p>进入低功耗模式后RTC 的时钟是 32K因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。</p></li>
</ul>
<p><code class="docutils literal notranslate"><span class="pre">hbn</span> <span class="pre">sleepTim</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">hbn</span> <span class="pre">sleeptime</span></code></p>
<ul class="simple">
<li><p>hbn 可以选择带一个 sleepTim 的参数决定其内部RTC唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。</p></li>
<li><p>如果指令包含 sleepTim 参数hbn 将会在 sleepTim * clock_period 的时刻被唤醒,表现为复位芯片,重新打印起始报文。</p></li>
<li><p>进入低功耗模式后RTC的时钟是32K ,因此 sleepTim 为32768时表现为睡眠1S 后唤醒。</p></li>
<li><p>hbn 可以选择带一个 sleeptime 的参数,决定其内部 RTC 唤醒时间。如果指令不带此参数,那么默认不使用 RTC 内部唤醒,目前的固件仅支持上电复位唤醒。</p></li>
<li><p>如果指令包含 sleeptime 参数hbn 将会在``sleeptime * clock_period`` 的时刻被唤醒,表现为复位芯片,重新打印起始报文。</p></li>
<li><p>进入低功耗模式后RTC 的时钟是 32K因此 sleeptime 为 32768 时,表现为睡眠 1S 后唤醒。</p></li>
</ul>
</div>
</div>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -206,23 +204,25 @@
<div class="section" id="adc">
<h1><span class="section-number">9. </span>ADC - 按键检测电压<a class="headerlink" href="#adc" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本demo基于ADC使用按键的方式检测外部输入引脚的电压值。</p>
</div></blockquote>
<p>本 demo 主要介绍一个基于 ADC 的按键功能,使用 ADC 检测按键输入引脚的电压值,根据不同的分压值判断相应的按键是否按下</p>
<div class="section" id="id1">
<h2><span class="section-number">9.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>本demo基于BL706_AVB开发板:</p>
<p> demo 基于 BL706_AVB 开发板:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
<span class="o">----------------------------------</span>
<span class="n">ADC</span> <span class="n">CH8</span> <span class="o">&lt;--&gt;</span> <span class="n">GPIO18</span>
</pre></div>
</div>
<p><strong>分压电路:</strong></p>
<div class="figure align-default" id="id5">
<img alt="" src="../../_images/adc_key_demo.png" />
<p class="caption"><span class="caption-text">adc key</span><a class="headerlink" href="#id5" title="永久链接至图片"></a></p>
</div>
</div>
<div class="section" id="id2">
<h2><span class="section-number">9.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/adc/adc_key</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code> 来配置</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_ADC_CLOCK_SOURCE ROOT_CLOCK_SOURCE_XCLK</span>
@ -230,13 +230,13 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备时钟源,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/clock_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO18_FUNC GPIO_FUN_ADC</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
@ -271,6 +271,9 @@
<span class="cp">#endif</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使能 <code class="docutils literal notranslate"><span class="pre">BSP_USING_ADC0</span></code> 并配置 <code class="docutils literal notranslate"><span class="pre">ADC</span></code> 设备配置,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
@ -311,9 +314,9 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">adc_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备当前注册为ADC0</p></li>
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">adc_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备,当前注册为 ADC0</p></li>
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 句柄中</p></li>
<li><p>然后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以轮询模式来打开 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 完成ADC相关的配置</p></li>
<li><p>然后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以轮询模式来打开 <code class="docutils literal notranslate"><span class="pre">adc_key</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 完成 ADC 相关的配置</p></li>
<li><p>最后调用 <code class="docutils literal notranslate"><span class="pre">adc_channel_start</span></code> 启用ADC的转换</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
@ -358,13 +361,13 @@
</div>
<div class="section" id="id4">
<h2><span class="section-number">9.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<p>本实验依次按下开发板上的SW1 ~ SW5会得到不同的电压值:</p>
<p>本实验依次按下开发板上的 SW1 ~ SW5 会得到不同的电压值:</p>
<ul class="simple">
<li><p>key 0: 0V左右</p></li>
<li><p>key 1: 0.1V左右</p></li>
<li><p>key 2: 0.2V左右</p></li>
<li><p>key 3: 0.3V左右</p></li>
<li><p>key 4: 0.43V左右</p></li>
<li><p>key 0: 0V 左右</p></li>
<li><p>key 1: 0.1V 左右</p></li>
<li><p>key 2: 0.2V 左右</p></li>
<li><p>key 3: 0.3V 左右</p></li>
<li><p>key 4: 0.43V 左右</p></li>
</ul>
<p>实际运行结果如下图所示:</p>
<div class="figure align-default">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -206,12 +204,10 @@
<div class="section" id="gpio">
<h1><span class="section-number">1. </span>GPIO 输出 - 流水灯<a class="headerlink" href="#gpio" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本demo基于GPIO外设的输出模式编写。</p>
</div></blockquote>
<p>本 demo 基于 GPIO 外设的输出模式编写。</p>
<div class="section" id="id1">
<h2><span class="section-number">1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>本 demo 基于BL706_IOT开发板连接方式如下</p>
<p>本 demo 基于 BL706_IOT 开发板,连接方式如下</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
<span class="o">----------------------------------</span>
<span class="n">D0</span> <span class="o">&lt;--&gt;</span> <span class="n">GPIO22</span>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -225,13 +223,12 @@
<h2><span class="section-number">3.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/pwm/pwm_breath_led</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">PWM</span></code> 复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO22_FUNC GPIO_FUN_PWM</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">PWM</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">PWM</span></code> 设备复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
@ -260,6 +257,9 @@
<span class="cp">#endif</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使能 <code class="docutils literal notranslate"><span class="pre">BSP_USING_PWM_CH2</span></code> 并配置 <code class="docutils literal notranslate"><span class="pre">PWM</span></code> 设备配置,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
@ -298,7 +298,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使用 <code class="docutils literal notranslate"><span class="pre">device_contorl</span></code> 函数,配合 <code class="docutils literal notranslate"><span class="pre">DEVICE_CTRL_CONFIG</span></code> 指令可以修改当前PWM通道的频率和占空比。</p></li>
<li><p>使用 <code class="docutils literal notranslate"><span class="pre">device_contorl</span></code> 函数,配合 <code class="docutils literal notranslate"><span class="pre">DEVICE_CTRL_CONFIG</span></code> 指令,可以修改当前 PWM 通道的频率和占空比。</p></li>
</ul>
</div>
<div class="section" id="id3">
@ -323,6 +323,10 @@
</div>
<div class="section" id="id4">
<h2><span class="section-number">3.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<div class="figure align-default">
<img alt="" src="../../_images/pwm_demo.gif" />
</div>
<p>pwm breath led!</p>
<p>见视频展示:</p>
<iframe src="//player.bilibili.com/player.html?aid=887712205&bvid=BV1xK4y1P7ur&cid=326227924&page=4" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div>
</div>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -206,9 +204,7 @@
<div class="section" id="gpio">
<h1><span class="section-number">2. </span>GPIO 中断 - 按键检测<a class="headerlink" href="#gpio" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本demo基于GPIO外设外部中断模式编写。</p>
</div></blockquote>
<p>本 demo 基于 GPIO 外设外部中断模式编写。</p>
<div class="section" id="id1">
<h2><span class="section-number">2.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>本 demo 基于BL706_IOT开发板自行添加按键电路连接方式如下</p>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -206,9 +204,7 @@
<div class="section" id="dma-ram">
<h1><span class="section-number">6. </span>DMA - RAM间数据搬运<a class="headerlink" href="#dma-ram" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本demo基于DMA方向为memory to memory 模式,进行数据的搬运。</p>
</div></blockquote>
<p>本 demo 基于 DMA方向为 memory to memory 模式,进行数据的搬运。</p>
<div class="section" id="id1">
<h2><span class="section-number">6.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p></p>
@ -217,7 +213,6 @@
<h2><span class="section-number">6.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/dma/dma_m2m</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">DMA</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
@ -254,6 +249,9 @@
<span class="cp">#endif</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使能 <code class="docutils literal notranslate"><span class="pre">BSP_USING_DMA0_CH0</span></code> 并配置 <code class="docutils literal notranslate"><span class="pre">DMA</span></code> 设备配置,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
@ -352,7 +350,7 @@
</div>
<div class="section" id="id4">
<h2><span class="section-number">6.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<p><code class="docutils literal notranslate"><span class="pre">dma_src_buffer</span></code> 数组中的数据通过DMA 通道0 以源32位宽、目标32位宽传输到 <code class="docutils literal notranslate"><span class="pre">dma_dst_buffer</span></code> 数组中,数据传输完成并完整,串口打印 <code class="docutils literal notranslate"><span class="pre">dma</span> <span class="pre">transfer</span> <span class="pre">success</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">dma_src_buffer</span></code> 数组中的数据通过 DMA 通道 0 ,以源 32 位宽、目标 32 位宽传输到 <code class="docutils literal notranslate"><span class="pre">dma_dst_buffer</span></code> 数组中,数据传输完成并完整,串口打印 <code class="docutils literal notranslate"><span class="pre">dma</span> <span class="pre">transfer</span> <span class="pre">success</span></code></p>
</div>
</div>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -208,7 +206,7 @@
<h1><span class="section-number">7. </span>I2C - AT24CXX 读写<a class="headerlink" href="#i2c-at24cxx" title="永久链接至标题"></a></h1>
<div class="section" id="id1">
<h2><span class="section-number">7.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>本 demo 基于BL706_IOT开发板自行添加 AT24CXX 电路,连接方式如下</p>
<p>本 demo 基于 BL706_IOT 开发板,自行添加 AT24CXX 电路,连接方式如下</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
<span class="o">----------------------------------</span>
<span class="n">I2C_SCL</span> <span class="o">&lt;--&gt;</span> <span class="n">GPIO11</span>
@ -220,7 +218,6 @@
<h2><span class="section-number">7.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/i2c/i2c_at24cxx</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code> 来配置</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_I2C_CLOCK_SOURCE ROOT_CLOCK_SOURCE_BCLK</span>
@ -228,7 +225,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备时钟源,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
@ -236,7 +233,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
@ -263,6 +260,9 @@
<span class="cp">#endif</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使能 <code class="docutils literal notranslate"><span class="pre">BSP_USING_I2C0</span></code> 并配置 <code class="docutils literal notranslate"><span class="pre">I2C</span></code> 设备配置,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
@ -319,7 +319,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">i2c_transfer</span></code> 传输两个 <code class="docutils literal notranslate"><span class="pre">msg</span></code>,一个 <code class="docutils literal notranslate"><span class="pre">msg</span></code> 代表向 eeprom 写入8字节数据,一个 <code class="docutils literal notranslate"><span class="pre">msg</span></code> 代表从 eeprom 读取8字节数据,</p></li>
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">i2c_transfer</span></code> 传输两个 <code class="docutils literal notranslate"><span class="pre">msg</span></code>,一个 <code class="docutils literal notranslate"><span class="pre">msg</span></code> 代表向 eeprom 写入 8 字节数据,一个 <code class="docutils literal notranslate"><span class="pre">msg</span></code> 代表从 eeprom 读取 8 字节数据,</p></li>
</ul>
</div>
<div class="section" id="id3">

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -206,9 +204,7 @@
<div class="section" id="mtimer">
<h1><span class="section-number">5. </span>MTIMER - 内核定时器<a class="headerlink" href="#mtimer" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本demo基于 risc-v 内核自带的一个64位定时器MTIMER编写。MTIMER最大可以定时500年本demo可以为后面os tick提供参考。</p>
</div></blockquote>
<p>本 demo 基于 risc-v 内核自带的一个 64 位定时器MTIMER编写。本 demo 可以为后面 os tick 提供参考。</p>
<div class="section" id="id1">
<h2><span class="section-number">5.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p></p>
@ -217,8 +213,11 @@
<h2><span class="section-number">5.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/systick</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mtimer</span></code> 时钟默认经过分频以后为 1M方便后面使用减少计算时间。</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p><code class="docutils literal notranslate"><span class="pre">mtimer</span></code> 时钟默认经过分频以后为 1M方便后面使用减少计算时间。</p>
</div>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
@ -237,7 +236,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使用上述代码设置mtimer定时时间为1s并且注册中断回调函数。</p></li>
<li><p>使用上述代码设置 mtimer 定时时间为 1s并且注册中断回调函数。</p></li>
</ul>
</div>
<div class="section" id="id3">
@ -262,7 +261,7 @@
</div>
<div class="section" id="id4">
<h2><span class="section-number">5.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<p><code class="docutils literal notranslate"><span class="pre">tick</span></code> 值每秒自增1并通过串口打印。</p>
<p><code class="docutils literal notranslate"><span class="pre">tick</span></code> 值每秒自增 1 并通过串口打印。</p>
</div>
</div>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -208,7 +206,7 @@
<h1><span class="section-number">8. </span>SPI - TFT LCD 显示<a class="headerlink" href="#spi-tft-lcd" title="永久链接至标题"></a></h1>
<div class="section" id="id1">
<h2><span class="section-number">8.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>本 demo 基于BL706_AVB开发板<strong>其中 MISO 和MOSI 默认进行了调换</strong>连接方式如下</p>
<p>本 demo 基于 BL706_AVB 开发板,连接方式如下</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
<span class="o">----------------------------------</span>
<span class="n">LCD_CS</span> <span class="o">&lt;--&gt;</span> <span class="n">GPIO10</span>
@ -223,7 +221,6 @@
<h2><span class="section-number">8.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/spi/spi_lcd</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/clock_config.h</span></code> 来配置</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_SPI_CLOCK_SOURCE ROOT_CLOCK_SOURCE_BCLK</span>
@ -231,7 +228,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/pinmux_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备时钟源,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/clock_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
@ -241,8 +238,16 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/peripheral_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/pinmux_config.h</span></code></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p><code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/pinmux_config.h</span></code> 当前给所有的示例demo使用所以需要先选定 <code class="docutils literal notranslate"><span class="pre">PINMUX_SELECT</span></code><code class="docutils literal notranslate"><span class="pre">PINMUX_LVGL</span></code>,开启其中一个 demo</p>
</div>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 <code class="docutils literal notranslate"><span class="pre">drivers/bl702_driver/hal_drv/default_config/spi_config.h</span></code><code class="docutils literal notranslate"><span class="pre">SPI_SWAP_ENABLE</span></code> 为 0</p>
</div>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
@ -278,6 +283,9 @@
<span class="cp">#endif</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使能 <code class="docutils literal notranslate"><span class="pre">BSP_USING_SPI0</span></code> 并配置 <code class="docutils literal notranslate"><span class="pre">SPI</span></code> 设备配置,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
@ -394,6 +402,10 @@
</div>
<div class="section" id="id4">
<h2><span class="section-number">8.4. </span>实验现象<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
<div class="figure align-default">
<img alt="" src="../../_images/spi_lcd.png" />
</div>
<p>spi display!</p>
</div>
</div>

View file

@ -92,12 +92,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>
@ -206,12 +204,10 @@
<div class="section" id="uart">
<h1><span class="section-number">4. </span>UART - 数据自收发<a class="headerlink" href="#uart" title="永久链接至标题"></a></h1>
<blockquote>
<div><p>本demo基于 UART 外设轮询发送、接收FIFO中断模式编写。</p>
</div></blockquote>
<p>本 demo 基于 UART 外设轮询发送、接收 FIFO 中断模式编写。</p>
<div class="section" id="id1">
<h2><span class="section-number">4.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>本 demo 基于BL706_IOT开发板连接方式如下</p>
<p>本 demo 基于 BL706_IOT 开发板,连接方式如下</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">GPIO</span> <span class="n">function</span> <span class="n">GPIO</span> <span class="n">pin</span>
<span class="o">----------------------------------</span>
<span class="n">UART0_TX</span> <span class="o">&lt;--&gt;</span> <span class="n">GPIO14</span>
@ -223,7 +219,6 @@
<h2><span class="section-number">4.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<ul class="simple">
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/uart/uart_echo</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备的时钟源由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code> 来配置</p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_UART_CLOCK_SOURCE ROOT_CLOCK_SOURCE_PLL_96M</span>
@ -231,7 +226,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备的复用引脚由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备时钟源,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/clock_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX</span>
@ -239,7 +234,7 @@
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备配置由板级描述文件 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code> 来配置</p></li>
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
@ -272,6 +267,9 @@
<span class="cp">#endif</span>
</pre></div>
</td></tr></table></div>
<ul class="simple">
<li><p>使能 <code class="docutils literal notranslate"><span class="pre">BSP_USING_UART0</span></code> 并配置 <code class="docutils literal notranslate"><span class="pre">UART</span></code> 设备配置,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/peripheral_config.h</span></code></p></li>
</ul>
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">bflb_platform_init</span><span class="p">();</span>
</pre></div>
</td></tr></table></div>

View file

@ -93,12 +93,10 @@
<p class="caption"><span class="caption-text">快速开发指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="get_started/get_started.html">1. 开发前的准备</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_cdk.html">2. Windows 下使用 CDK (类 MDK Keil)开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Windows_quick_start_eclipse.html">3. Windows 下使用 Eclipse 开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/Linux_quick_start_ubuntu.html">4. Linux OR WSL 环境开发指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">5. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">6. 基于 cmake 框架构建自己的工程</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">7. 硬件连接</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/index.html">2. 开发环境搭建指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/bl_dev_cube.html">3. BLDevCube 烧录工具指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/cmake_quick_start.html">4. 基于 cmake 框架新建工程指南</a></li>
<li class="toctree-l1"><a class="reference internal" href="get_started/connecting_hardware.html">5. 硬件连接指南</a></li>
</ul>
<p class="caption"><span class="caption-text">API 手册</span></p>
<ul>

File diff suppressed because one or more lines are too long

View file

@ -1,4 +0,0 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: cc25d7d982b3f2727b74849d9127cb3d
tags: 645f666f9bcd5a90fca523b33c5a78b7

Some files were not shown because too many files have changed in this diff Show more