[doc] update dma and rst style in hardware connection
This commit is contained in:
parent
c3a7fc5254
commit
1ad8786877
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/development_guide/build/html/_images/tiaomao.png
Normal file
BIN
docs/development_guide/build/html/_images/tiaomao.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
@ -21,10 +21,12 @@ DMA 设备结构体定义
|
|||||||
struct device parent;
|
struct device parent;
|
||||||
uint8_t id;
|
uint8_t id;
|
||||||
uint8_t ch;
|
uint8_t ch;
|
||||||
uint8_t direction;
|
|
||||||
uint8_t transfer_mode;
|
uint8_t transfer_mode;
|
||||||
|
uint8_t direction;
|
||||||
uint32_t src_req;
|
uint32_t src_req;
|
||||||
uint32_t dst_req;
|
uint32_t dst_req;
|
||||||
|
uint8_t src_addr_inc;
|
||||||
|
uint8_t dst_addr_inc;
|
||||||
uint8_t src_burst_size;
|
uint8_t src_burst_size;
|
||||||
uint8_t dst_burst_size;
|
uint8_t dst_burst_size;
|
||||||
uint8_t src_width;
|
uint8_t src_width;
|
||||||
@ -35,16 +37,25 @@ DMA 设备结构体定义
|
|||||||
- **parent** 继承父类属性
|
- **parent** 继承父类属性
|
||||||
- **id** DMA id号,默认0,当前只有一个DMA
|
- **id** DMA id号,默认0,当前只有一个DMA
|
||||||
- **ch** 通道号
|
- **ch** 通道号
|
||||||
- **direction** 传输方向
|
|
||||||
- **transfer_mode** 传输模式
|
- **transfer_mode** 传输模式
|
||||||
|
- **direction** 传输方向
|
||||||
- **src_req** 源请求
|
- **src_req** 源请求
|
||||||
- **dst_req** 目标请求
|
- **dst_req** 目标请求
|
||||||
|
- **src_addr_inc** 源地址自增
|
||||||
|
- **dst_addr_inc** 目标地址自增
|
||||||
- **src_burst_size** 源突发字节数
|
- **src_burst_size** 源突发字节数
|
||||||
- **dst_burst_size** 目标突发字节数
|
- **dst_burst_size** 目标突发字节数
|
||||||
- **src_width** 源传输位宽
|
- **src_width** 源传输位宽
|
||||||
- **dst_width** 目标传输位宽
|
- **dst_width** 目标传输位宽
|
||||||
- **lli_cfg** 用来存储dma通道的一些信息,用户不用管
|
- **lli_cfg** 用来存储dma通道的一些信息,用户不用管
|
||||||
|
|
||||||
|
``transfer_mode`` 提供以下类型
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
|
||||||
|
#define DMA_LLI_ONCE_MODE 0
|
||||||
|
#define DMA_LLI_CYCLE_MODE 1
|
||||||
|
|
||||||
``direction`` 提供以下类型
|
``direction`` 提供以下类型
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
@ -56,13 +67,6 @@ DMA 设备结构体定义
|
|||||||
DMA_PERIPH_TO_PERIPH, /*!< DMA transfer tyep:peripheral to peripheral */
|
DMA_PERIPH_TO_PERIPH, /*!< DMA transfer tyep:peripheral to peripheral */
|
||||||
}dma_transfer_dir_type;
|
}dma_transfer_dir_type;
|
||||||
|
|
||||||
``transfer_mode`` 提供以下类型
|
|
||||||
|
|
||||||
.. code-block:: C
|
|
||||||
|
|
||||||
#define DMA_LLI_ONCE_MODE 0
|
|
||||||
#define DMA_LLI_CYCLE_MODE 1
|
|
||||||
|
|
||||||
``src_req`` 提供以下类型
|
``src_req`` 提供以下类型
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
@ -115,6 +119,20 @@ DMA 设备结构体定义
|
|||||||
#define DMA_REQUEST_USB_EP6 0x0000001E /*!< DMA request peripheral:USB EP6*/
|
#define DMA_REQUEST_USB_EP6 0x0000001E /*!< DMA request peripheral:USB EP6*/
|
||||||
#define DMA_REQUEST_USB_EP7 0x0000001F /*!< DMA request peripheral:USB EP7 */
|
#define DMA_REQUEST_USB_EP7 0x0000001F /*!< DMA request peripheral:USB EP7 */
|
||||||
|
|
||||||
|
``src_addr_inc`` 提供以下类型
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
|
||||||
|
#define DMA_ADDR_INCREMENT_DISABLE 0 /*!< Addr increment mode disable */
|
||||||
|
#define DMA_ADDR_INCREMENT_ENABLE 1 /*!< Addr increment mode enable */
|
||||||
|
|
||||||
|
``dst_addr_inc`` 提供以下类型
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
|
||||||
|
#define DMA_ADDR_INCREMENT_DISABLE 0 /*!< Addr increment mode disable */
|
||||||
|
#define DMA_ADDR_INCREMENT_ENABLE 1 /*!< Addr increment mode enable */
|
||||||
|
|
||||||
``src_burst_size`` 提供以下类型
|
``src_burst_size`` 提供以下类型
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
@ -162,13 +180,17 @@ DMA 设备参数配置表
|
|||||||
#define DMA0_CH0_CONFIG \
|
#define DMA0_CH0_CONFIG \
|
||||||
{ \
|
{ \
|
||||||
.id = 0, \
|
.id = 0, \
|
||||||
.ch = 0,\
|
.ch = 7, \
|
||||||
.direction = DMA_MEMORY_TO_MEMORY,\
|
.direction = DMA_MEMORY_TO_MEMORY, \
|
||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_NONE, \
|
.dst_req = DMA_REQUEST_NONE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -6,8 +6,18 @@
|
|||||||
examples 的目录结构
|
examples 的目录结构
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
在 ``bl_mcu_sdk/examples`` 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 ``CMakeList.txt`` 以及该 case 相关的源码
|
在 ``bl_mcu_sdk/examples`` 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 ``CMakeList.txt`` 以及该 case 相关的源码。
|
||||||
|
|
||||||
|
可供用户使用的 cmake 变量如下:
|
||||||
|
|
||||||
|
- mains:main 函数入口
|
||||||
|
- TARGET_REQUIRED_SRCS:没有编译成 lib 的外部 c 文件
|
||||||
|
- TARGET_REQUIRED_PRIVATE_INCLUDE:外部 c 文件需要的头文件路径
|
||||||
|
- TARGET_REQUIRED_LIBS:目标需要的 lib 库名称,可以是 cmake 通过 generate_bin 生成的 target 或者外部导入的 lib 库
|
||||||
|
- TARGET_REQUIRED_PRIVATE_OPTIONS:私有 c flag
|
||||||
|
- LINKER_SCRIPT:重新定义链接脚本
|
||||||
|
- GLOBAL_C_FLAGS:全局 c flag
|
||||||
|
- GLOBAL_LD_FLAGS:全局 ld flag
|
||||||
|
|
||||||
添加单个源文件工程
|
添加单个源文件工程
|
||||||
------------------------
|
------------------------
|
||||||
@ -131,7 +141,7 @@ examples 的目录结构
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
make BOARD=bl706_iot APP=gpio_case SUPPORT_FREERTOS=y
|
make BOARD=bl706_iot APP=gpio_case
|
||||||
|
|
||||||
添加新工程并设置私有编译选项(gcc option)
|
添加新工程并设置私有编译选项(gcc option)
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
@ -11,17 +11,22 @@ FatFs 文件系统读写(SD 卡)
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_AVB 开发板,连接方式如下
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
SD_CS <--> GPIO10
|
|
||||||
SPI_SCK <--> GPIO19
|
|
||||||
SPI_MISO <--> GPIO20
|
|
||||||
SPI_MOSI <--> GPIO21
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - SD_CS
|
||||||
|
- GPIO10
|
||||||
|
* - SPI_SCK
|
||||||
|
- GPIO19
|
||||||
|
* - SPI_MISO
|
||||||
|
- GPIO20
|
||||||
|
* - SPI_MOSI
|
||||||
|
- GPIO21
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -88,6 +93,10 @@ FatFs 文件系统读写(SD 卡)
|
|||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_SPI0_TX, \
|
.dst_req = DMA_REQUEST_SPI0_TX, \
|
||||||
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
@ -104,6 +113,10 @@ FatFs 文件系统读写(SD 卡)
|
|||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_SPI0_RX, \
|
.src_req = DMA_REQUEST_SPI0_RX, \
|
||||||
.dst_req = DMA_REQUEST_NONE, \
|
.dst_req = DMA_REQUEST_NONE, \
|
||||||
|
.src_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \
|
||||||
|
.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
|
@ -12,15 +12,18 @@ Shell 命令行调试
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
UART0_TX <--> GPIO14
|
|
||||||
UART0_RX <--> GPIO15
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - UART0_TX
|
||||||
|
- GPIO14
|
||||||
|
* - UART0_RX
|
||||||
|
- GPIO15
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-------------------------
|
-------------------------
|
||||||
|
@ -25,27 +25,44 @@ BL706 AVB + GC0308摄像头模块 + windows 相机
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_AVB 开发板,连接方式如下
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
CAM <--> GPIO0
|
* - CAM
|
||||||
CAM <--> GPIO1
|
- GPIO0
|
||||||
CAM <--> GPIO2
|
* - CAM
|
||||||
CAM <--> GPIO3
|
- GPIO1
|
||||||
CAM <--> GPIO4
|
* - CAM
|
||||||
CAM <--> GPIO5
|
- GPIO2
|
||||||
CAM <--> GPIO6
|
* - CAM
|
||||||
USB_DP <--> GPIO7
|
- GPIO3
|
||||||
USB_DM <--> GPIO8
|
* - CAM
|
||||||
CLK_OUT <--> GPIO9
|
- GPIO4
|
||||||
I2C_SCL <--> GPIO11
|
* - CAM
|
||||||
I2C_SDA <--> GPIO16
|
- GPIO5
|
||||||
CAM <--> GPIO29
|
* - CAM
|
||||||
CAM <--> GPIO30
|
- GPIO6
|
||||||
CAM <--> GPIO31
|
* - USB_DP
|
||||||
|
- GPIO7
|
||||||
|
* - USB_DM
|
||||||
|
- GPIO8
|
||||||
|
* - CLK_OUT
|
||||||
|
- GPIO9
|
||||||
|
* - I2C_SCL
|
||||||
|
- GPIO11
|
||||||
|
* - I2C_SDA
|
||||||
|
- GPIO16
|
||||||
|
* - CAM
|
||||||
|
- GPIO29
|
||||||
|
* - CAM
|
||||||
|
- GPIO30
|
||||||
|
* - CAM
|
||||||
|
- GPIO31
|
||||||
|
|
||||||
.. note:: 注意 706 AVB FUN1 的跳冒不要接,默认连接到摄像头引脚,如果接了则连接到了 i2s codec
|
.. note:: 注意 706 AVB FUN1 的跳冒不要接,默认连接到摄像头引脚,如果接了则连接到了 i2s codec
|
||||||
|
|
||||||
@ -116,6 +133,10 @@ BL706 AVB + GC0308摄像头模块 + windows 相机
|
|||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_UART1_TX, \
|
.dst_req = DMA_REQUEST_UART1_TX, \
|
||||||
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
@ -128,7 +149,16 @@ BL706 AVB + GC0308摄像头模块 + windows 相机
|
|||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
|
DMA_DEV(dma_ch2)->direction = DMA_MEMORY_TO_PERIPH;
|
||||||
|
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
|
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_USB_EP1;
|
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_USB_EP1;
|
||||||
|
DMA_DEV(dma_ch2)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
|
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_16BYTE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_burst_size = DMA_BURST_1BYTE;
|
||||||
|
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_8BIT;
|
||||||
|
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_8BIT;
|
||||||
device_open(dma_ch2, 0);
|
device_open(dma_ch2, 0);
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
|
@ -5,13 +5,16 @@ ADC - 按键检测电压
|
|||||||
|
|
||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
本 demo 基于 BL706_AVB 开发板:
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
ADC CH8 <--> GPIO18
|
* - ADC CH8
|
||||||
|
- GPIO18
|
||||||
|
|
||||||
**分压电路:**
|
**分压电路:**
|
||||||
|
|
||||||
|
@ -22,13 +22,17 @@ DMA - RAM间数据搬运
|
|||||||
#define DMA0_CH0_CONFIG \
|
#define DMA0_CH0_CONFIG \
|
||||||
{ \
|
{ \
|
||||||
.id = 0, \
|
.id = 0, \
|
||||||
.ch = 0,\
|
.ch = 0, \
|
||||||
.direction = DMA_MEMORY_TO_MEMORY,\
|
.direction = DMA_MEMORY_TO_MEMORY, \
|
||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_NONE, \
|
.dst_req = DMA_REQUEST_NONE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_4BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_4BYTE, \
|
||||||
|
.src_width = DMA_TRANSFER_WIDTH_32BIT, \
|
||||||
|
.dst_width = DMA_TRANSFER_WIDTH_32BIT, \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -38,29 +42,38 @@ DMA - RAM间数据搬运
|
|||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
dma_register(DMA0_CH0_INDEX, "DMA");
|
dma_register(DMA0_CH0_INDEX, "dma_ch0");
|
||||||
|
|
||||||
struct device *dma = device_find("DMA");
|
struct device *dma_ch0 = device_find("dma_ch0");
|
||||||
|
|
||||||
if (dma)
|
if (dma_ch0) {
|
||||||
{
|
DMA_DEV(dma_ch0)->direction = DMA_MEMORY_TO_MEMORY;
|
||||||
device_open(dma, 0);
|
DMA_DEV(dma_ch0)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
device_set_callback(dma, dma_transfer_done);
|
DMA_DEV(dma_ch0)->src_req = DMA_REQUEST_NONE;
|
||||||
device_control(dma, DEVICE_CTRL_SET_INT, NULL);
|
DMA_DEV(dma_ch0)->dst_req = DMA_REQUEST_NONE;
|
||||||
|
DMA_DEV(dma_ch0)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch0)->dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch0)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
|
DMA_DEV(dma_ch0)->dst_burst_size = DMA_BURST_4BYTE;
|
||||||
|
DMA_DEV(dma_ch0)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
|
DMA_DEV(dma_ch0)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
|
device_open(dma_ch0, 0);
|
||||||
|
device_set_callback(dma_ch0, dma_transfer_done);
|
||||||
|
device_control(dma_ch0, DEVICE_CTRL_SET_INT, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
- 首先调用 ``dma_register`` 函数注册 ``DMA`` 设备的一个通道,当前注册 ``DMA_CH0``
|
- 首先调用 ``dma_register`` 函数注册 ``DMA`` 设备的一个通道,当前注册 ``DMA_CH0``
|
||||||
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``dma`` 句柄中
|
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``dma_ch0`` 句柄中
|
||||||
- 最后使用 ``device_open`` 以默认模式来打开 ``dma`` 设备,调用 ``device_set_callback`` 注册一个dma通道0中断回调函数,调用 ``device_control`` 开启dma传输完成中断
|
- 最后使用 ``device_open`` 以默认模式来打开 ``dma_ch0`` 设备,调用 ``device_set_callback`` 注册一个 dma 通道0中断回调函数,调用 ``device_control`` 开启dma传输完成中断
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
dma_reload(dma,(uint32_t)dma_src_buffer,(uint32_t)dma_dst_buffer,8000);
|
dma_reload(dma_ch0,(uint32_t)dma_src_buffer,(uint32_t)dma_dst_buffer,8000);
|
||||||
dma_channel_start(dma);
|
dma_channel_start(dma_ch0);
|
||||||
|
|
||||||
- 调用 ``dma_reload`` 函数对dma 通道0的配置进行补充,``DMA0_CH0_CONFIG`` 中已经补充了一部分配置,这边主要补充源数据地址和目标数据地址以及传输总长度
|
- 调用 ``dma_reload`` 函数对 dma 通道0的配置进行补充,``DMA0_CH0_CONFIG`` 中已经补充了一部分配置,这边主要补充源数据地址和目标数据地址以及传输总长度
|
||||||
- 调用 ``dma_channel_start`` 开启dma传输
|
- 调用 ``dma_channel_start`` 开启 dma 传输
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
@ -6,17 +6,22 @@ GPIO 输出 - 流水灯
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
D0 <--> GPIO22
|
|
||||||
D1 <--> GPIO29
|
|
||||||
D2 <--> GPIO30
|
|
||||||
D3 <--> GPIO31
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - D0
|
||||||
|
- GPIO22
|
||||||
|
* - D1
|
||||||
|
- GPIO29
|
||||||
|
* - D2
|
||||||
|
- GPIO30
|
||||||
|
* - D3
|
||||||
|
- GPIO31
|
||||||
|
|
||||||
.. figure:: img/blink_breath_sch.png
|
.. figure:: img/blink_breath_sch.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -6,13 +6,16 @@ GPIO 中断 - 按键检测
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于BL706_IOT开发板,自行添加按键电路,连接方式如下
|
本 demo 基于BL706_IOT开发板,自行添加按键电路,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
SW1 <--> GPIO11
|
* - SW1
|
||||||
|
- GPIO11
|
||||||
|
|
||||||
.. figure:: img/button_sch.png
|
.. figure:: img/button_sch.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -4,15 +4,18 @@ I2C - AT24CXX 读写
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,自行添加 AT24CXX 电路,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,自行添加 AT24CXX 电路,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
I2C_SCL <--> GPIO11
|
|
||||||
I2C_SDA <--> GPIO16
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - I2C_SCL
|
||||||
|
- GPIO11
|
||||||
|
* - I2C_SDA
|
||||||
|
- GPIO16
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
@ -6,7 +6,7 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
准备工具
|
准备工具
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
- 一块 bl702 开发板 +DMIC音频子板 + PC端 Audio_Cube 工具
|
- 一块 bl702 开发板 + DMIC音频子板 + PC 端 Audio_Cube 工具
|
||||||
|
|
||||||
|
|
||||||
硬件连接
|
硬件连接
|
||||||
@ -33,6 +33,12 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
* - UART0_RX
|
* - UART0_RX
|
||||||
- GPIO14
|
- GPIO14
|
||||||
|
|
||||||
|
如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/tiaomao.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
|
||||||
本 demo 用到的内部外设资源如下:
|
本 demo 用到的内部外设资源如下:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -59,21 +65,20 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
|
|
||||||
本文档不再详细功能实现的细节,仅概述功能过程,可以参考 I2S 与 UART 相关文档。
|
本文档不再详细功能实现的细节,仅概述功能过程,可以参考 I2S 与 UART 相关文档。
|
||||||
|
|
||||||
配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h`` 中的宏定义选项:
|
配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h`` 中的宏定义选项:
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
|
||||||
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
||||||
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
|
||||||
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
||||||
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
|
||||||
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
||||||
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
||||||
|
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
||||||
|
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
||||||
|
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
||||||
|
|
||||||
编译和烧录
|
编译和烧录
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -90,7 +95,7 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
$ cd <sdk_path>/bl_mcu_sdk
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
$ make BOARD=bl706_avb APP=audio_cube
|
$ make BOARD=bl706_iot APP=audio_cube
|
||||||
|
|
||||||
- **烧录**
|
- **烧录**
|
||||||
详见 :ref:`bl_dev_cube`
|
详见 :ref:`bl_dev_cube`
|
||||||
|
@ -30,6 +30,12 @@ I2S - flash 内置音频播放
|
|||||||
* - I2C_SDA
|
* - I2C_SDA
|
||||||
- GPIO11
|
- GPIO11
|
||||||
|
|
||||||
|
如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/tiaomao.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
|
||||||
本 demo 用到的内部外设资源如下:
|
本 demo 用到的内部外设资源如下:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -59,13 +65,15 @@ I2S - flash 内置音频播放
|
|||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
|
||||||
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
||||||
|
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
||||||
|
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
||||||
|
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
||||||
|
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
||||||
|
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
||||||
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
|
||||||
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
|
||||||
|
|
||||||
配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
||||||
|
|
||||||
@ -111,7 +119,7 @@ I2S 的配置与使能:
|
|||||||
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
||||||
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
||||||
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
||||||
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_avb/peripheral_config.h`` 中预设的参数
|
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_iot/peripheral_config.h`` 中预设的参数
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
@ -144,8 +152,12 @@ DMA 的配置与使能
|
|||||||
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_CYCLE_MODE;
|
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_CYCLE_MODE;
|
||||||
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
||||||
|
DMA_DEV(dma_ch2)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_16BIT;
|
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_16BIT;
|
||||||
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_16BIT;
|
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_16BIT;
|
||||||
|
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_burst_size = DMA_BURST_4BYTE;
|
||||||
device_open(dma_ch2, 0);
|
device_open(dma_ch2, 0);
|
||||||
|
|
||||||
/* connect i2s device and dma device */
|
/* connect i2s device and dma device */
|
||||||
@ -183,7 +195,7 @@ DMA 的配置与使能
|
|||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
$ cd <sdk_path>/bl_mcu_sdk
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
$ make BOARD=bl706_avb APP=i2s_play_form_flash
|
$ make BOARD=bl706_iot APP=i2s_play_form_flash
|
||||||
|
|
||||||
- **烧录**
|
- **烧录**
|
||||||
详见 :ref:`bl_dev_cube`
|
详见 :ref:`bl_dev_cube`
|
||||||
|
@ -30,6 +30,11 @@ I2S - 录音回环播放
|
|||||||
* - I2C_SDA
|
* - I2C_SDA
|
||||||
- GPIO11
|
- GPIO11
|
||||||
|
|
||||||
|
如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/tiaomao.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
- 本 demo 用到的内部外设资源如下:
|
- 本 demo 用到的内部外设资源如下:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -56,18 +61,20 @@ I2S - 录音回环播放
|
|||||||
|
|
||||||
- 软件代码见 ``examples/i2s/i2s_play_form_record``
|
- 软件代码见 ``examples/i2s/i2s_play_form_record``
|
||||||
|
|
||||||
- 配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h`` 中的宏定义选项:
|
配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h`` 中的宏定义选项:
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
|
||||||
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
||||||
|
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
||||||
|
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
||||||
|
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
||||||
|
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
||||||
|
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
||||||
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
|
||||||
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
|
||||||
|
|
||||||
- 配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
- 配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
||||||
|
|
||||||
@ -115,7 +122,7 @@ I2S 的配置与使能:
|
|||||||
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
||||||
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
||||||
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
||||||
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_avb/peripheral_config.h`` 中预设的参数
|
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_iot/peripheral_config.h`` 中预设的参数
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
@ -151,10 +158,12 @@ DMA 的配置与使能
|
|||||||
DMA_DEV(dma_ch3)->transfer_mode = DMA_LLI_ONCE_MODE;
|
DMA_DEV(dma_ch3)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
DMA_DEV(dma_ch3)->src_req = DMA_REQUEST_I2S_RX;
|
DMA_DEV(dma_ch3)->src_req = DMA_REQUEST_I2S_RX;
|
||||||
DMA_DEV(dma_ch3)->dst_req = DMA_REQUEST_NONE;
|
DMA_DEV(dma_ch3)->dst_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch3)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch3)->src_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
DMA_DEV(dma_ch3)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch3)->dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
DMA_DEV(dma_ch3)->src_burst_size = DMA_BURST_4BYTE;
|
DMA_DEV(dma_ch3)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
DMA_DEV(dma_ch3)->dst_burst_size = DMA_BURST_4BYTE;
|
DMA_DEV(dma_ch3)->dst_burst_size = DMA_BURST_4BYTE;
|
||||||
|
DMA_DEV(dma_ch3)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
|
DMA_DEV(dma_ch3)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
device_open(dma_ch3, 0);
|
device_open(dma_ch3, 0);
|
||||||
|
|
||||||
/* connect i2s device and dma device */
|
/* connect i2s device and dma device */
|
||||||
@ -172,6 +181,8 @@ DMA 的配置与使能
|
|||||||
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE;
|
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
||||||
|
DMA_DEV(dma_ch2)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_4BYTE;
|
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
@ -226,7 +237,7 @@ DMA 中断回调函数
|
|||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
$ cd <sdk_path>/bl_mcu_sdk
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
$ make BOARD=bl706_avb APP=i2s_play_form_record
|
$ make BOARD=bl706_iot APP=i2s_play_form_record
|
||||||
|
|
||||||
- **烧录**
|
- **烧录**
|
||||||
|
|
||||||
|
@ -6,13 +6,16 @@ PWM - 呼吸灯
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于BL706_IOT开发板,连接方式如下
|
本 demo 基于BL706_IOT开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
PWM_CH2 <--> GPIO22
|
* - PWM_CH2
|
||||||
|
- GPIO22
|
||||||
|
|
||||||
.. figure:: img/blink_breath_sch.png
|
.. figure:: img/blink_breath_sch.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -42,16 +42,22 @@ PWM - 驱动步进电机
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于BL706_IOT开发板,连接方式如下
|
本 demo 基于BL706_IOT开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
PWM_CH0 <--> GPIO10
|
* - PWM_CH0
|
||||||
PWM_CH1 <--> GPIO11
|
- GPIO10
|
||||||
PWM_CH2 <--> GPIO12
|
* - PWM_CH1
|
||||||
PWM_CH3 <--> GPIO3
|
- GPIO11
|
||||||
|
* - PWM_CH2
|
||||||
|
- GPIO12
|
||||||
|
* - PWM_CH3
|
||||||
|
- GPIO3
|
||||||
|
|
||||||
.. figure:: img/pwm_step_motor.png
|
.. figure:: img/pwm_step_motor.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -6,18 +6,24 @@ SPI - TFT LCD 显示
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_AVB 开发板,连接方式如下
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
LCD_CS <--> GPIO10
|
|
||||||
LCD_DC <--> GPIO22
|
|
||||||
SPI_SCK <--> GPIO19
|
|
||||||
SPI_MISO <--> GPIO20
|
|
||||||
SPI_MOSI <--> GPIO21
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - LCD_CS
|
||||||
|
- GPIO10
|
||||||
|
* - LCD_DC
|
||||||
|
- GPIO22
|
||||||
|
* - SPI_SCK
|
||||||
|
- GPIO19
|
||||||
|
* - SPI_MISO
|
||||||
|
- GPIO20
|
||||||
|
* - SPI_MOSI
|
||||||
|
- GPIO21
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -41,7 +47,7 @@ SPI - TFT LCD 显示
|
|||||||
|
|
||||||
- 配置 ``SPI`` 设备复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h``,,如有改动,请自行修改
|
- 配置 ``SPI`` 设备复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h``,,如有改动,请自行修改
|
||||||
|
|
||||||
.. note:: 为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 ``drivers/bl702_driver/hal_drv/default_config/spi_config.h`` 中 ``SPI_SWAP_ENABLE`` 为 0
|
.. note:: 为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 ``bsp/board/bl706_avb/pinmux_config.h`` 中 ``pin_swap_enable`` 为 0
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
@ -6,14 +6,18 @@ UART - 数据自收发
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
UART0_TX <--> GPIO14
|
* - UART0_TX
|
||||||
UART0_RX <--> GPIO15
|
- GPIO14
|
||||||
|
* - UART0_RX
|
||||||
|
- GPIO15
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
@ -259,10 +259,12 @@
|
|||||||
<span class="k">struct</span> <span class="nc">device</span> <span class="n">parent</span><span class="p">;</span>
|
<span class="k">struct</span> <span class="nc">device</span> <span class="n">parent</span><span class="p">;</span>
|
||||||
<span class="kt">uint8_t</span> <span class="n">id</span><span class="p">;</span>
|
<span class="kt">uint8_t</span> <span class="n">id</span><span class="p">;</span>
|
||||||
<span class="kt">uint8_t</span> <span class="n">ch</span><span class="p">;</span>
|
<span class="kt">uint8_t</span> <span class="n">ch</span><span class="p">;</span>
|
||||||
<span class="kt">uint8_t</span> <span class="n">direction</span><span class="p">;</span>
|
|
||||||
<span class="kt">uint8_t</span> <span class="n">transfer_mode</span><span class="p">;</span>
|
<span class="kt">uint8_t</span> <span class="n">transfer_mode</span><span class="p">;</span>
|
||||||
|
<span class="kt">uint8_t</span> <span class="n">direction</span><span class="p">;</span>
|
||||||
<span class="kt">uint32_t</span> <span class="n">src_req</span><span class="p">;</span>
|
<span class="kt">uint32_t</span> <span class="n">src_req</span><span class="p">;</span>
|
||||||
<span class="kt">uint32_t</span> <span class="n">dst_req</span><span class="p">;</span>
|
<span class="kt">uint32_t</span> <span class="n">dst_req</span><span class="p">;</span>
|
||||||
|
<span class="kt">uint8_t</span> <span class="n">src_addr_inc</span><span class="p">;</span>
|
||||||
|
<span class="kt">uint8_t</span> <span class="n">dst_addr_inc</span><span class="p">;</span>
|
||||||
<span class="kt">uint8_t</span> <span class="n">src_burst_size</span><span class="p">;</span>
|
<span class="kt">uint8_t</span> <span class="n">src_burst_size</span><span class="p">;</span>
|
||||||
<span class="kt">uint8_t</span> <span class="n">dst_burst_size</span><span class="p">;</span>
|
<span class="kt">uint8_t</span> <span class="n">dst_burst_size</span><span class="p">;</span>
|
||||||
<span class="kt">uint8_t</span> <span class="n">src_width</span><span class="p">;</span>
|
<span class="kt">uint8_t</span> <span class="n">src_width</span><span class="p">;</span>
|
||||||
@ -275,16 +277,23 @@
|
|||||||
<li><p><strong>parent</strong> 继承父类属性</p></li>
|
<li><p><strong>parent</strong> 继承父类属性</p></li>
|
||||||
<li><p><strong>id</strong> DMA id号,默认0,当前只有一个DMA</p></li>
|
<li><p><strong>id</strong> DMA id号,默认0,当前只有一个DMA</p></li>
|
||||||
<li><p><strong>ch</strong> 通道号</p></li>
|
<li><p><strong>ch</strong> 通道号</p></li>
|
||||||
<li><p><strong>direction</strong> 传输方向</p></li>
|
|
||||||
<li><p><strong>transfer_mode</strong> 传输模式</p></li>
|
<li><p><strong>transfer_mode</strong> 传输模式</p></li>
|
||||||
|
<li><p><strong>direction</strong> 传输方向</p></li>
|
||||||
<li><p><strong>src_req</strong> 源请求</p></li>
|
<li><p><strong>src_req</strong> 源请求</p></li>
|
||||||
<li><p><strong>dst_req</strong> 目标请求</p></li>
|
<li><p><strong>dst_req</strong> 目标请求</p></li>
|
||||||
|
<li><p><strong>src_addr_inc</strong> 源地址自增</p></li>
|
||||||
|
<li><p><strong>dst_addr_inc</strong> 目标地址自增</p></li>
|
||||||
<li><p><strong>src_burst_size</strong> 源突发字节数</p></li>
|
<li><p><strong>src_burst_size</strong> 源突发字节数</p></li>
|
||||||
<li><p><strong>dst_burst_size</strong> 目标突发字节数</p></li>
|
<li><p><strong>dst_burst_size</strong> 目标突发字节数</p></li>
|
||||||
<li><p><strong>src_width</strong> 源传输位宽</p></li>
|
<li><p><strong>src_width</strong> 源传输位宽</p></li>
|
||||||
<li><p><strong>dst_width</strong> 目标传输位宽</p></li>
|
<li><p><strong>dst_width</strong> 目标传输位宽</p></li>
|
||||||
<li><p><strong>lli_cfg</strong> 用来存储dma通道的一些信息,用户不用管</p></li>
|
<li><p><strong>lli_cfg</strong> 用来存储dma通道的一些信息,用户不用管</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<p><code class="docutils literal notranslate"><span class="pre">transfer_mode</span></code> 提供以下类型</p>
|
||||||
|
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_LLI_ONCE_MODE 0</span>
|
||||||
|
<span class="cp">#define DMA_LLI_CYCLE_MODE 1</span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
<p><code class="docutils literal notranslate"><span class="pre">direction</span></code> 提供以下类型</p>
|
<p><code class="docutils literal notranslate"><span class="pre">direction</span></code> 提供以下类型</p>
|
||||||
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="p">{</span>
|
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="k">typedef</span> <span class="k">enum</span> <span class="p">{</span>
|
||||||
<span class="n">DMA_MEMORY_TO_MEMORY</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="cm">/*!< DMA transfer tyep:memory to memory */</span>
|
<span class="n">DMA_MEMORY_TO_MEMORY</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="cm">/*!< DMA transfer tyep:memory to memory */</span>
|
||||||
@ -294,11 +303,6 @@
|
|||||||
<span class="p">}</span><span class="n">dma_transfer_dir_type</span><span class="p">;</span>
|
<span class="p">}</span><span class="n">dma_transfer_dir_type</span><span class="p">;</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p><code class="docutils literal notranslate"><span class="pre">transfer_mode</span></code> 提供以下类型</p>
|
|
||||||
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_LLI_ONCE_MODE 0</span>
|
|
||||||
<span class="cp">#define DMA_LLI_CYCLE_MODE 1</span>
|
|
||||||
</pre></div>
|
|
||||||
</div>
|
|
||||||
<p><code class="docutils literal notranslate"><span class="pre">src_req</span></code> 提供以下类型</p>
|
<p><code class="docutils literal notranslate"><span class="pre">src_req</span></code> 提供以下类型</p>
|
||||||
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_REQUEST_NONE 0x00000000 </span><span class="cm">/*!< DMA request peripheral:None */</span><span class="cp"></span>
|
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_REQUEST_NONE 0x00000000 </span><span class="cm">/*!< DMA request peripheral:None */</span><span class="cp"></span>
|
||||||
<span class="cp">#define DMA_REQUEST_UART0_RX 0x00000000 </span><span class="cm">/*!< DMA request peripheral:UART0 RX */</span><span class="cp"></span>
|
<span class="cp">#define DMA_REQUEST_UART0_RX 0x00000000 </span><span class="cm">/*!< DMA request peripheral:UART0 RX */</span><span class="cp"></span>
|
||||||
@ -347,6 +351,16 @@
|
|||||||
<span class="cp">#define DMA_REQUEST_USB_EP7 0x0000001F </span><span class="cm">/*!< DMA request peripheral:USB EP7 */</span><span class="cp"></span>
|
<span class="cp">#define DMA_REQUEST_USB_EP7 0x0000001F </span><span class="cm">/*!< DMA request peripheral:USB EP7 */</span><span class="cp"></span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
|
<p><code class="docutils literal notranslate"><span class="pre">src_addr_inc</span></code> 提供以下类型</p>
|
||||||
|
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_ADDR_INCREMENT_DISABLE 0 </span><span class="cm">/*!< Addr increment mode disable */</span><span class="cp"></span>
|
||||||
|
<span class="cp">#define DMA_ADDR_INCREMENT_ENABLE 1 </span><span class="cm">/*!< Addr increment mode enable */</span><span class="cp"></span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
|
<p><code class="docutils literal notranslate"><span class="pre">dst_addr_inc</span></code> 提供以下类型</p>
|
||||||
|
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_ADDR_INCREMENT_DISABLE 0 </span><span class="cm">/*!< Addr increment mode disable */</span><span class="cp"></span>
|
||||||
|
<span class="cp">#define DMA_ADDR_INCREMENT_ENABLE 1 </span><span class="cm">/*!< Addr increment mode enable */</span><span class="cp"></span>
|
||||||
|
</pre></div>
|
||||||
|
</div>
|
||||||
<p><code class="docutils literal notranslate"><span class="pre">src_burst_size</span></code> 提供以下类型</p>
|
<p><code class="docutils literal notranslate"><span class="pre">src_burst_size</span></code> 提供以下类型</p>
|
||||||
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_BURST_1BYTE 0</span>
|
<div class="highlight-C notranslate"><div class="highlight"><pre><span></span><span class="cp">#define DMA_BURST_1BYTE 0</span>
|
||||||
<span class="cp">#define DMA_BURST_4BYTE 1</span>
|
<span class="cp">#define DMA_BURST_4BYTE 1</span>
|
||||||
@ -383,13 +397,17 @@
|
|||||||
<span class="cp">#define DMA0_CH0_CONFIG \</span>
|
<span class="cp">#define DMA0_CH0_CONFIG \</span>
|
||||||
<span class="cp">{ \</span>
|
<span class="cp">{ \</span>
|
||||||
<span class="cp"> .id = 0, \</span>
|
<span class="cp"> .id = 0, \</span>
|
||||||
<span class="cp"> .ch = 0,\</span>
|
<span class="cp"> .ch = 7, \</span>
|
||||||
<span class="cp"> .direction = DMA_MEMORY_TO_MEMORY,\</span>
|
<span class="cp"> .direction = DMA_MEMORY_TO_MEMORY, \</span>
|
||||||
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
||||||
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
||||||
<span class="cp"> .dst_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .dst_req = DMA_REQUEST_NONE, \</span>
|
||||||
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_32BIT , \</span>
|
<span class="cp"> .src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_32BIT , \</span>
|
<span class="cp"> .dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
|
<span class="cp"> .src_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
|
<span class="cp"> .dst_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
|
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
|
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp">}</span>
|
<span class="cp">}</span>
|
||||||
<span class="cp">#endif</span>
|
<span class="cp">#endif</span>
|
||||||
<span class="cp">#endif</span>
|
<span class="cp">#endif</span>
|
||||||
|
@ -212,7 +212,18 @@
|
|||||||
<p>本文档将介绍一下如何基于本 SDK 新建一个全新的项目</p>
|
<p>本文档将介绍一下如何基于本 SDK 新建一个全新的项目</p>
|
||||||
<div class="section" id="examples">
|
<div class="section" id="examples">
|
||||||
<h2><span class="section-number">4.1. </span>examples 的目录结构<a class="headerlink" href="#examples" title="永久链接至标题">¶</a></h2>
|
<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>
|
<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>
|
||||||
|
<p>可供用户使用的 cmake 变量如下:</p>
|
||||||
|
<ul class="simple">
|
||||||
|
<li><p>mains:main 函数入口</p></li>
|
||||||
|
<li><p>TARGET_REQUIRED_SRCS:没有编译成 lib 的外部 c 文件</p></li>
|
||||||
|
<li><p>TARGET_REQUIRED_PRIVATE_INCLUDE:外部 c 文件需要的头文件路径</p></li>
|
||||||
|
<li><p>TARGET_REQUIRED_LIBS:目标需要的 lib 库名称,可以是 cmake 通过 generate_bin 生成的 target 或者外部导入的 lib 库</p></li>
|
||||||
|
<li><p>TARGET_REQUIRED_PRIVATE_OPTIONS:私有 c flag</p></li>
|
||||||
|
<li><p>LINKER_SCRIPT:重新定义链接脚本</p></li>
|
||||||
|
<li><p>GLOBAL_C_FLAGS:全局 c flag</p></li>
|
||||||
|
<li><p>GLOBAL_LD_FLAGS:全局 ld flag</p></li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">4.2. </span>添加单个源文件工程<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">4.2. </span>添加单个源文件工程<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||||
@ -346,7 +357,7 @@
|
|||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
|
<li><p>编写好相应的功能代码后,在 bl_mcu_sdk 目录下进行编译即可,编译命令如下:</p></li>
|
||||||
</ul>
|
</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
|
<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>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -216,15 +216,32 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h2><span class="section-number">2.2. </span>硬件连接<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">2.2. </span>硬件连接<a class="headerlink" href="#id2" 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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">SD_CS</span> <span class="o"><--></span> <span class="n">GPIO10</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">SPI_SCK</span> <span class="o"><--></span> <span class="n">GPIO19</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">SPI_MISO</span> <span class="o"><--></span> <span class="n">GPIO20</span>
|
</colgroup>
|
||||||
<span class="n">SPI_MOSI</span> <span class="o"><--></span> <span class="n">GPIO21</span>
|
<thead>
|
||||||
</pre></div>
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
</div>
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>SD_CS</p></td>
|
||||||
|
<td><p>GPIO10</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>SPI_SCK</p></td>
|
||||||
|
<td><p>GPIO19</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>SPI_MISO</p></td>
|
||||||
|
<td><p>GPIO20</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>SPI_MOSI</p></td>
|
||||||
|
<td><p>GPIO21</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id3">
|
<div class="section" id="id3">
|
||||||
<h2><span class="section-number">2.3. </span>软件实现<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">2.3. </span>软件实现<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||||
@ -328,7 +345,15 @@
|
|||||||
<span class="normal">31</span>
|
<span class="normal">31</span>
|
||||||
<span class="normal">32</span>
|
<span class="normal">32</span>
|
||||||
<span class="normal">33</span>
|
<span class="normal">33</span>
|
||||||
<span class="normal">34</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_DMA0_CH3</span>
|
<span class="normal">34</span>
|
||||||
|
<span class="normal">35</span>
|
||||||
|
<span class="normal">36</span>
|
||||||
|
<span class="normal">37</span>
|
||||||
|
<span class="normal">38</span>
|
||||||
|
<span class="normal">39</span>
|
||||||
|
<span class="normal">40</span>
|
||||||
|
<span class="normal">41</span>
|
||||||
|
<span class="normal">42</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_DMA0_CH3</span>
|
||||||
<span class="cp">#define BSP_USING_DMA0_CH4</span>
|
<span class="cp">#define BSP_USING_DMA0_CH4</span>
|
||||||
|
|
||||||
<span class="cp">#if defined(BSP_USING_DMA0_CH3)</span>
|
<span class="cp">#if defined(BSP_USING_DMA0_CH3)</span>
|
||||||
@ -341,6 +366,10 @@
|
|||||||
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
||||||
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
||||||
<span class="cp"> .dst_req = DMA_REQUEST_SPI0_TX, \</span>
|
<span class="cp"> .dst_req = DMA_REQUEST_SPI0_TX, \</span>
|
||||||
|
<span class="cp"> .src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
|
<span class="cp"> .dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \</span>
|
||||||
|
<span class="cp"> .src_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
|
<span class="cp"> .dst_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp"> }</span>
|
<span class="cp"> }</span>
|
||||||
@ -357,6 +386,10 @@
|
|||||||
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
||||||
<span class="cp"> .src_req = DMA_REQUEST_SPI0_RX, \</span>
|
<span class="cp"> .src_req = DMA_REQUEST_SPI0_RX, \</span>
|
||||||
<span class="cp"> .dst_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .dst_req = DMA_REQUEST_NONE, \</span>
|
||||||
|
<span class="cp"> .src_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \</span>
|
||||||
|
<span class="cp"> .dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
|
<span class="cp"> .src_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
|
<span class="cp"> .dst_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp"> }</span>
|
<span class="cp"> }</span>
|
||||||
|
@ -221,13 +221,26 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h2><span class="section-number">1.2. </span>硬件连接<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">1.2. </span>硬件连接<a class="headerlink" href="#id2" 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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">UART0_TX</span> <span class="o"><--></span> <span class="n">GPIO14</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">UART0_RX</span> <span class="o"><--></span> <span class="n">GPIO15</span>
|
<col style="width: 50%" />
|
||||||
</pre></div>
|
</colgroup>
|
||||||
</div>
|
<thead>
|
||||||
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>UART0_TX</p></td>
|
||||||
|
<td><p>GPIO14</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>UART0_RX</p></td>
|
||||||
|
<td><p>GPIO15</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id3">
|
<div class="section" id="id3">
|
||||||
<h2><span class="section-number">1.3. </span>软件实现<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">1.3. </span>软件实现<a class="headerlink" href="#id3" title="永久链接至标题">¶</a></h2>
|
||||||
|
@ -233,26 +233,65 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h2><span class="section-number">3.4.2. </span>硬件连接<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">3.4.2. </span>硬件连接<a class="headerlink" href="#id2" 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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO0</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO1</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO2</span>
|
</colgroup>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO3</span>
|
<thead>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO4</span>
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO5</span>
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO6</span>
|
</tr>
|
||||||
<span class="n">USB_DP</span> <span class="o"><--></span> <span class="n">GPIO7</span>
|
</thead>
|
||||||
<span class="n">USB_DM</span> <span class="o"><--></span> <span class="n">GPIO8</span>
|
<tbody>
|
||||||
<span class="n">CLK_OUT</span> <span class="o"><--></span> <span class="n">GPIO9</span>
|
<tr class="row-even"><td><p>CAM</p></td>
|
||||||
<span class="n">I2C_SCL</span> <span class="o"><--></span> <span class="n">GPIO11</span>
|
<td><p>GPIO0</p></td>
|
||||||
<span class="n">I2C_SDA</span> <span class="o"><--></span> <span class="n">GPIO16</span>
|
</tr>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO29</span>
|
<tr class="row-odd"><td><p>CAM</p></td>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO30</span>
|
<td><p>GPIO1</p></td>
|
||||||
<span class="n">CAM</span> <span class="o"><--></span> <span class="n">GPIO31</span>
|
</tr>
|
||||||
</pre></div>
|
<tr class="row-even"><td><p>CAM</p></td>
|
||||||
</div>
|
<td><p>GPIO2</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO3</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO4</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO5</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO6</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>USB_DP</p></td>
|
||||||
|
<td><p>GPIO7</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>USB_DM</p></td>
|
||||||
|
<td><p>GPIO8</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>CLK_OUT</p></td>
|
||||||
|
<td><p>GPIO9</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>I2C_SCL</p></td>
|
||||||
|
<td><p>GPIO11</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>I2C_SDA</p></td>
|
||||||
|
<td><p>GPIO16</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO29</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO30</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>CAM</p></td>
|
||||||
|
<td><p>GPIO31</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="admonition-title">注解</p>
|
<p class="admonition-title">注解</p>
|
||||||
<p>注意 706 AVB FUN1 的跳冒不要接,默认连接到摄像头引脚,如果接了则连接到了 i2s codec</p>
|
<p>注意 706 AVB FUN1 的跳冒不要接,默认连接到摄像头引脚,如果接了则连接到了 i2s codec</p>
|
||||||
@ -343,7 +382,11 @@
|
|||||||
<span class="normal">28</span>
|
<span class="normal">28</span>
|
||||||
<span class="normal">29</span>
|
<span class="normal">29</span>
|
||||||
<span class="normal">30</span>
|
<span class="normal">30</span>
|
||||||
<span class="normal">31</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_CAM</span>
|
<span class="normal">31</span>
|
||||||
|
<span class="normal">32</span>
|
||||||
|
<span class="normal">33</span>
|
||||||
|
<span class="normal">34</span>
|
||||||
|
<span class="normal">35</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_CAM</span>
|
||||||
<span class="cp">#define BSP_USING_I2C0</span>
|
<span class="cp">#define BSP_USING_I2C0</span>
|
||||||
<span class="cp">#define BSP_USING_USB</span>
|
<span class="cp">#define BSP_USING_USB</span>
|
||||||
<span class="cp">#define BSP_USING_DMA0_CH2</span>
|
<span class="cp">#define BSP_USING_DMA0_CH2</span>
|
||||||
@ -369,6 +412,10 @@
|
|||||||
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
||||||
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
||||||
<span class="cp"> .dst_req = DMA_REQUEST_UART1_TX, \</span>
|
<span class="cp"> .dst_req = DMA_REQUEST_UART1_TX, \</span>
|
||||||
|
<span class="cp"> .src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
|
<span class="cp"> .dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \</span>
|
||||||
|
<span class="cp"> .src_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
|
<span class="cp"> .dst_burst_size = DMA_BURST_1BYTE, \</span>
|
||||||
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_8BIT, \</span>
|
||||||
<span class="cp"> }</span>
|
<span class="cp"> }</span>
|
||||||
@ -379,8 +426,26 @@
|
|||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>使能外设并配置,见 <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">bsp/board/bl706_avb/peripheral_config.h</span></code> ,外设配置可以保持默认,在程序中修改,如下</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_USB_EP1</span><span class="p">;</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><span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">direction</span> <span class="o">=</span> <span class="n">DMA_MEMORY_TO_PERIPH</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_ONCE_MODE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_USB_EP1</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_ENABLE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_DISABLE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_16BYTE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_1BYTE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_8BIT</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_8BIT</span><span class="p">;</span>
|
||||||
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
|
@ -214,12 +214,23 @@
|
|||||||
<p>本 demo 主要介绍一个基于 ADC 的按键功能,使用 ADC 检测按键输入引脚的电压值,根据不同的分压值判断相应的按键是否按下</p>
|
<p>本 demo 主要介绍一个基于 ADC 的按键功能,使用 ADC 检测按键输入引脚的电压值,根据不同的分压值判断相应的按键是否按下</p>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">9.1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">9.1.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">ADC</span> <span class="n">CH8</span> <span class="o"><--></span> <span class="n">GPIO18</span>
|
<col style="width: 50%" />
|
||||||
</pre></div>
|
<col style="width: 50%" />
|
||||||
</div>
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>ADC CH8</p></td>
|
||||||
|
<td><p>GPIO18</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<p><strong>分压电路:</strong></p>
|
<p><strong>分压电路:</strong></p>
|
||||||
<div class="figure align-default" id="id5">
|
<div class="figure align-default" id="id5">
|
||||||
<img alt="" src="../../../_images/adc_key_demo.png" />
|
<img alt="" src="../../../_images/adc_key_demo.png" />
|
||||||
|
@ -237,21 +237,29 @@
|
|||||||
<span class="normal">14</span>
|
<span class="normal">14</span>
|
||||||
<span class="normal">15</span>
|
<span class="normal">15</span>
|
||||||
<span class="normal">16</span>
|
<span class="normal">16</span>
|
||||||
<span class="normal">17</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_DMA0_CH0</span>
|
<span class="normal">17</span>
|
||||||
|
<span class="normal">18</span>
|
||||||
|
<span class="normal">19</span>
|
||||||
|
<span class="normal">20</span>
|
||||||
|
<span class="normal">21</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define BSP_USING_DMA0_CH0</span>
|
||||||
|
|
||||||
<span class="cp">#if defined(BSP_USING_DMA0_CH0)</span>
|
<span class="cp">#if defined(BSP_USING_DMA0_CH0)</span>
|
||||||
<span class="cp">#ifndef DMA0_CH0_CONFIG</span>
|
<span class="cp">#ifndef DMA0_CH0_CONFIG</span>
|
||||||
<span class="cp">#define DMA0_CH0_CONFIG \</span>
|
<span class="cp">#define DMA0_CH0_CONFIG \</span>
|
||||||
<span class="cp">{ \</span>
|
<span class="cp"> { \</span>
|
||||||
<span class="cp">.id = 0, \</span>
|
<span class="cp"> .id = 0, \</span>
|
||||||
<span class="cp">.ch = 0,\</span>
|
<span class="cp"> .ch = 0, \</span>
|
||||||
<span class="cp">.direction = DMA_MEMORY_TO_MEMORY,\</span>
|
<span class="cp"> .direction = DMA_MEMORY_TO_MEMORY, \</span>
|
||||||
<span class="cp">.transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
<span class="cp"> .transfer_mode = DMA_LLI_ONCE_MODE, \</span>
|
||||||
<span class="cp">.src_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .src_req = DMA_REQUEST_NONE, \</span>
|
||||||
<span class="cp">.dst_req = DMA_REQUEST_NONE, \</span>
|
<span class="cp"> .dst_req = DMA_REQUEST_NONE, \</span>
|
||||||
<span class="cp">.src_width = DMA_TRANSFER_WIDTH_32BIT , \</span>
|
<span class="cp"> .src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
<span class="cp">.dst_width = DMA_TRANSFER_WIDTH_32BIT , \</span>
|
<span class="cp"> .dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \</span>
|
||||||
<span class="cp">}</span>
|
<span class="cp"> .src_burst_size = DMA_BURST_4BYTE, \</span>
|
||||||
|
<span class="cp"> .dst_burst_size = DMA_BURST_4BYTE, \</span>
|
||||||
|
<span class="cp"> .src_width = DMA_TRANSFER_WIDTH_32BIT, \</span>
|
||||||
|
<span class="cp"> .dst_width = DMA_TRANSFER_WIDTH_32BIT, \</span>
|
||||||
|
<span class="cp"> }</span>
|
||||||
<span class="cp">#endif</span>
|
<span class="cp">#endif</span>
|
||||||
<span class="cp">#endif</span>
|
<span class="cp">#endif</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
@ -268,31 +276,49 @@
|
|||||||
<span class="normal"> 7</span>
|
<span class="normal"> 7</span>
|
||||||
<span class="normal"> 8</span>
|
<span class="normal"> 8</span>
|
||||||
<span class="normal"> 9</span>
|
<span class="normal"> 9</span>
|
||||||
<span class="normal">10</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH0_INDEX</span><span class="p">,</span> <span class="s">"DMA"</span><span class="p">);</span>
|
<span class="normal">10</span>
|
||||||
|
<span class="normal">11</span>
|
||||||
|
<span class="normal">12</span>
|
||||||
|
<span class="normal">13</span>
|
||||||
|
<span class="normal">14</span>
|
||||||
|
<span class="normal">15</span>
|
||||||
|
<span class="normal">16</span>
|
||||||
|
<span class="normal">17</span>
|
||||||
|
<span class="normal">18</span>
|
||||||
|
<span class="normal">19</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH0_INDEX</span><span class="p">,</span> <span class="s">"dma_ch0"</span><span class="p">);</span>
|
||||||
|
|
||||||
<span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">dma</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"DMA"</span><span class="p">);</span>
|
<span class="k">struct</span> <span class="nc">device</span> <span class="o">*</span><span class="n">dma_ch0</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"dma_ch0"</span><span class="p">);</span>
|
||||||
|
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="n">dma</span><span class="p">)</span>
|
<span class="k">if</span> <span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span> <span class="p">{</span>
|
||||||
<span class="p">{</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">direction</span> <span class="o">=</span> <span class="n">DMA_MEMORY_TO_MEMORY</span><span class="p">;</span>
|
||||||
<span class="n">device_open</span><span class="p">(</span><span class="n">dma</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_ONCE_MODE</span><span class="p">;</span>
|
||||||
<span class="n">device_set_callback</span><span class="p">(</span><span class="n">dma</span><span class="p">,</span> <span class="n">dma_transfer_done</span><span class="p">);</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
||||||
<span class="n">device_control</span><span class="p">(</span><span class="n">dma</span><span class="p">,</span> <span class="n">DEVICE_CTRL_SET_INT</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">src_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_ENABLE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">dst_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_ENABLE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">dst_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
||||||
|
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||||
|
<span class="n">device_set_callback</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">,</span> <span class="n">dma_transfer_done</span><span class="p">);</span>
|
||||||
|
<span class="n">device_control</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">,</span> <span class="n">DEVICE_CTRL_SET_INT</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
|
||||||
<span class="p">}</span>
|
<span class="p">}</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">dma_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">DMA</span></code> 设备的一个通道,当前注册 <code class="docutils literal notranslate"><span class="pre">DMA_CH0</span></code></p></li>
|
<li><p>首先调用 <code class="docutils literal notranslate"><span class="pre">dma_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">DMA</span></code> 设备的一个通道,当前注册 <code class="docutils literal notranslate"><span class="pre">DMA_CH0</span></code></p></li>
|
||||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">dma</span></code> 句柄中</p></li>
|
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">dma_ch0</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">dma</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_set_callback</span></code> 注册一个dma通道0中断回调函数,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 开启dma传输完成中断</p></li>
|
<li><p>最后使用 <code class="docutils literal notranslate"><span class="pre">device_open</span></code> 以默认模式来打开 <code class="docutils literal notranslate"><span class="pre">dma_ch0</span></code> 设备,调用 <code class="docutils literal notranslate"><span class="pre">device_set_callback</span></code> 注册一个 dma 通道0中断回调函数,调用 <code class="docutils literal notranslate"><span class="pre">device_control</span></code> 开启dma传输完成中断</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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="n">dma_reload</span><span class="p">(</span><span class="n">dma</span><span class="p">,(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">dma_src_buffer</span><span class="p">,(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">dma_dst_buffer</span><span class="p">,</span><span class="mi">8000</span><span class="p">);</span>
|
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">dma_reload</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">,(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">dma_src_buffer</span><span class="p">,(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">dma_dst_buffer</span><span class="p">,</span><span class="mi">8000</span><span class="p">);</span>
|
||||||
<span class="n">dma_channel_start</span><span class="p">(</span><span class="n">dma</span><span class="p">);</span>
|
<span class="n">dma_channel_start</span><span class="p">(</span><span class="n">dma_ch0</span><span class="p">);</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">dma_reload</span></code> 函数对dma 通道0的配置进行补充,<code class="docutils literal notranslate"><span class="pre">DMA0_CH0_CONFIG</span></code> 中已经补充了一部分配置,这边主要补充源数据地址和目标数据地址以及传输总长度</p></li>
|
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">dma_reload</span></code> 函数对 dma 通道0的配置进行补充,<code class="docutils literal notranslate"><span class="pre">DMA0_CH0_CONFIG</span></code> 中已经补充了一部分配置,这边主要补充源数据地址和目标数据地址以及传输总长度</p></li>
|
||||||
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">dma_channel_start</span></code> 开启dma传输</p></li>
|
<li><p>调用 <code class="docutils literal notranslate"><span class="pre">dma_channel_start</span></code> 开启 dma 传输</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
<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"> 2</span>
|
||||||
|
@ -215,15 +215,32 @@
|
|||||||
<p>本 demo 基于 GPIO 外设的输出模式编写。</p>
|
<p>本 demo 基于 GPIO 外设的输出模式编写。</p>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">1.1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">1.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">D0</span> <span class="o"><--></span> <span class="n">GPIO22</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">D1</span> <span class="o"><--></span> <span class="n">GPIO29</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">D2</span> <span class="o"><--></span> <span class="n">GPIO30</span>
|
</colgroup>
|
||||||
<span class="n">D3</span> <span class="o"><--></span> <span class="n">GPIO31</span>
|
<thead>
|
||||||
</pre></div>
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
</div>
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>D0</p></td>
|
||||||
|
<td><p>GPIO22</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>D1</p></td>
|
||||||
|
<td><p>GPIO29</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>D2</p></td>
|
||||||
|
<td><p>GPIO30</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>D3</p></td>
|
||||||
|
<td><p>GPIO31</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<div class="figure align-default">
|
<div class="figure align-default">
|
||||||
<img alt="" src="../../../_images/blink_breath_sch.png" />
|
<img alt="" src="../../../_images/blink_breath_sch.png" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -215,12 +215,23 @@
|
|||||||
<p>本 demo 基于 GPIO 外设外部中断模式编写。</p>
|
<p>本 demo 基于 GPIO 外设外部中断模式编写。</p>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">1.2.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">1.2.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">SW1</span> <span class="o"><--></span> <span class="n">GPIO11</span>
|
<col style="width: 50%" />
|
||||||
</pre></div>
|
<col style="width: 50%" />
|
||||||
</div>
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>SW1</p></td>
|
||||||
|
<td><p>GPIO11</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<div class="figure align-default">
|
<div class="figure align-default">
|
||||||
<img alt="" src="../../../_images/button_sch.png" />
|
<img alt="" src="../../../_images/button_sch.png" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -213,13 +213,26 @@
|
|||||||
<h1><span class="section-number">7.1. </span>I2C - AT24CXX 读写<a class="headerlink" href="#i2c-at24cxx" title="永久链接至标题">¶</a></h1>
|
<h1><span class="section-number">7.1. </span>I2C - AT24CXX 读写<a class="headerlink" href="#i2c-at24cxx" title="永久链接至标题">¶</a></h1>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">7.1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">7.1.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">I2C_SCL</span> <span class="o"><--></span> <span class="n">GPIO11</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">I2C_SDA</span> <span class="o"><--></span> <span class="n">GPIO16</span>
|
<col style="width: 50%" />
|
||||||
</pre></div>
|
</colgroup>
|
||||||
</div>
|
<thead>
|
||||||
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>I2C_SCL</p></td>
|
||||||
|
<td><p>GPIO11</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>I2C_SDA</p></td>
|
||||||
|
<td><p>GPIO16</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h2><span class="section-number">7.1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">7.1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||||
|
@ -222,7 +222,7 @@
|
|||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">8.3.1. </span>准备工具<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">8.3.1. </span>准备工具<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>一块 bl702 开发板 +DMIC音频子板 + PC端 Audio_Cube 工具</p></li>
|
<li><p>一块 bl702 开发板 + DMIC音频子板 + PC 端 Audio_Cube 工具</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
@ -259,6 +259,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<p>如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示</p>
|
||||||
|
<blockquote>
|
||||||
|
<div><div class="figure align-default">
|
||||||
|
<img alt="" src="../../../_images/tiaomao.png" />
|
||||||
|
</div>
|
||||||
|
</div></blockquote>
|
||||||
<p>本 demo 用到的内部外设资源如下:</p>
|
<p>本 demo 用到的内部外设资源如下:</p>
|
||||||
<table class="colwidths-given docutils align-default">
|
<table class="colwidths-given docutils align-default">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@ -293,7 +299,7 @@
|
|||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<p>本文档不再详细功能实现的细节,仅概述功能过程,可以参考 I2S 与 UART 相关文档。</p>
|
<p>本文档不再详细功能实现的细节,仅概述功能过程,可以参考 I2S 与 UART 相关文档。</p>
|
||||||
<p>配置 <code class="docutils literal notranslate"><span class="pre">I2S,</span> <span class="pre">I2C,</span> <span class="pre">CLK_OUT(MCLK)</span></code> 相关复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/pinmux_config.h</span></code> 中的宏定义选项:</p>
|
<p>配置 <code class="docutils literal notranslate"><span class="pre">I2S,</span> <span class="pre">I2C,</span> <span class="pre">CLK_OUT(MCLK)</span></code> 相关复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 中的宏定义选项:</p>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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">2</span>
|
||||||
<span class="normal">3</span>
|
<span class="normal">3</span>
|
||||||
@ -302,15 +308,15 @@
|
|||||||
<span class="normal">6</span>
|
<span class="normal">6</span>
|
||||||
<span class="normal">7</span>
|
<span class="normal">7</span>
|
||||||
<span class="normal">8</span>
|
<span class="normal">8</span>
|
||||||
<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT</span>
|
<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S</span>
|
|
||||||
<span class="cp">#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT</span>
|
||||||
<span class="cp">#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S</span>
|
|
||||||
<span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
<span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
||||||
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
|
||||||
<span class="cp">#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX</span>
|
<span class="cp">#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX</span>
|
||||||
<span class="cp">#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX</span>
|
<span class="cp">#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
</div>
|
</div>
|
||||||
@ -326,7 +332,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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> <sdk_path>/bl_mcu_sdk
|
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_avb <span class="nv">APP</span><span class="o">=</span>audio_cube
|
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>audio_cube
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
|
@ -252,6 +252,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<p>如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示</p>
|
||||||
|
<blockquote>
|
||||||
|
<div><div class="figure align-default">
|
||||||
|
<img alt="" src="../../../_images/tiaomao.png" />
|
||||||
|
</div>
|
||||||
|
</div></blockquote>
|
||||||
<p>本 demo 用到的内部外设资源如下:</p>
|
<p>本 demo 用到的内部外设资源如下:</p>
|
||||||
<table class="colwidths-given docutils align-default">
|
<table class="colwidths-given docutils align-default">
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@ -292,13 +298,17 @@
|
|||||||
<span class="normal">4</span>
|
<span class="normal">4</span>
|
||||||
<span class="normal">5</span>
|
<span class="normal">5</span>
|
||||||
<span class="normal">6</span>
|
<span class="normal">6</span>
|
||||||
<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT</span>
|
<span class="normal">7</span>
|
||||||
<span class="cp">#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S</span>
|
<span class="normal">8</span>
|
||||||
|
<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
||||||
<span class="cp">#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
|
||||||
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<p>配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 <code class="docutils literal notranslate"><span class="pre">bsp/bsp_common/es8388/es8388.c</span></code></p>
|
<p>配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 <code class="docutils literal notranslate"><span class="pre">bsp/bsp_common/es8388/es8388.c</span></code></p>
|
||||||
@ -366,7 +376,7 @@
|
|||||||
<li><p>先调用 <code class="docutils literal notranslate"><span class="pre">i2s_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">I2S</span></code> 设备</p></li>
|
<li><p>先调用 <code class="docutils literal notranslate"><span class="pre">i2s_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">I2S</span></code> 设备</p></li>
|
||||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">i2s</span></code> 中</p></li>
|
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">i2s</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">I2S</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">I2S</span></code> 设备</p></li>
|
||||||
<li><p>如果不填写配置参数,会默认使用 <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">bsp/board/bl706_iot/peripheral_config.h</span></code> 中预设的参数</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
<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"> 2</span>
|
||||||
@ -411,7 +421,11 @@
|
|||||||
<span class="normal">12</span>
|
<span class="normal">12</span>
|
||||||
<span class="normal">13</span>
|
<span class="normal">13</span>
|
||||||
<span class="normal">14</span>
|
<span class="normal">14</span>
|
||||||
<span class="normal">15</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cm">/* register & open dma device */</span>
|
<span class="normal">15</span>
|
||||||
|
<span class="normal">16</span>
|
||||||
|
<span class="normal">17</span>
|
||||||
|
<span class="normal">18</span>
|
||||||
|
<span class="normal">19</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cm">/* register & open dma device */</span>
|
||||||
<span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH2_INDEX</span><span class="p">,</span> <span class="s">"dma_ch2_i2s_tx"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
<span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH2_INDEX</span><span class="p">,</span> <span class="s">"dma_ch2_i2s_tx"</span><span class="p">,</span> <span class="n">DEVICE_OFLAG_RDWR</span><span class="p">);</span>
|
||||||
<span class="n">dma_ch2</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"dma_ch2_i2s_tx"</span><span class="p">);</span>
|
<span class="n">dma_ch2</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"dma_ch2_i2s_tx"</span><span class="p">);</span>
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span> <span class="p">{</span>
|
<span class="k">if</span> <span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span> <span class="p">{</span>
|
||||||
@ -419,8 +433,12 @@
|
|||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_CYCLE_MODE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_CYCLE_MODE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_I2S_TX</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_I2S_TX</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_ENABLE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_DISABLE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_16BIT</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_16BIT</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_16BIT</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_16BIT</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||||
|
|
||||||
<span class="cm">/* connect i2s device and dma device */</span>
|
<span class="cm">/* connect i2s device and dma device */</span>
|
||||||
@ -461,7 +479,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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> <sdk_path>/bl_mcu_sdk
|
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_avb <span class="nv">APP</span><span class="o">=</span>i2s_play_form_flash
|
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>i2s_play_form_flash
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
|
@ -259,6 +259,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<p>如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示</p>
|
||||||
|
<blockquote>
|
||||||
|
<div><div class="figure align-default">
|
||||||
|
<img alt="" src="../../../_images/tiaomao.png" />
|
||||||
|
</div>
|
||||||
|
</div></blockquote>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>本 demo 用到的内部外设资源如下:</p></li>
|
<li><p>本 demo 用到的内部外设资源如下:</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -296,21 +302,25 @@
|
|||||||
<p>本文档不再详细介绍 I2C 与 DMA,主要介绍 I2S 相关配置,其他外设可以查看对应的文档。</p>
|
<p>本文档不再详细介绍 I2C 与 DMA,主要介绍 I2S 相关配置,其他外设可以查看对应的文档。</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/i2s/i2s_play_form_record</span></code></p></li>
|
<li><p>软件代码见 <code class="docutils literal notranslate"><span class="pre">examples/i2s/i2s_play_form_record</span></code></p></li>
|
||||||
<li><p>配置 <code class="docutils literal notranslate"><span class="pre">I2S,</span> <span class="pre">I2C,</span> <span class="pre">CLK_OUT(MCLK)</span></code> 相关复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 中的宏定义选项:</p></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
<p>配置 <code class="docutils literal notranslate"><span class="pre">I2S,</span> <span class="pre">I2C,</span> <span class="pre">CLK_OUT(MCLK)</span></code> 相关复用引脚,见 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_iot/pinmux_config.h</span></code> 中的宏定义选项:</p>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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">2</span>
|
||||||
<span class="normal">3</span>
|
<span class="normal">3</span>
|
||||||
<span class="normal">4</span>
|
<span class="normal">4</span>
|
||||||
<span class="normal">5</span>
|
<span class="normal">5</span>
|
||||||
<span class="normal">6</span>
|
<span class="normal">6</span>
|
||||||
<span class="normal">7</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT</span>
|
<span class="normal">7</span>
|
||||||
<span class="cp">#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S</span>
|
<span class="normal">8</span>
|
||||||
|
<span class="normal">9</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cp">#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX</span>
|
||||||
|
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
||||||
<span class="cp">#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S</span>
|
<span class="cp">#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S</span>
|
||||||
<span class="cp">#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C</span>
|
|
||||||
<span class="cp">#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C</span>
|
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<ul>
|
<ul>
|
||||||
@ -384,7 +394,7 @@
|
|||||||
<li><p>先调用 <code class="docutils literal notranslate"><span class="pre">i2s_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">I2S</span></code> 设备</p></li>
|
<li><p>先调用 <code class="docutils literal notranslate"><span class="pre">i2s_register</span></code> 函数注册 <code class="docutils literal notranslate"><span class="pre">I2S</span></code> 设备</p></li>
|
||||||
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">i2s</span></code> 中</p></li>
|
<li><p>然后通过 <code class="docutils literal notranslate"><span class="pre">find</span></code> 函数找到设备对应的句柄,保存于 <code class="docutils literal notranslate"><span class="pre">i2s</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">I2S</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">I2S</span></code> 设备</p></li>
|
||||||
<li><p>如果不填写配置参数,会默认使用 <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">bsp/board/bl706_iot/peripheral_config.h</span></code> 中预设的参数</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
<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"> 2</span>
|
||||||
@ -461,7 +471,11 @@
|
|||||||
<span class="normal">39</span>
|
<span class="normal">39</span>
|
||||||
<span class="normal">40</span>
|
<span class="normal">40</span>
|
||||||
<span class="normal">41</span>
|
<span class="normal">41</span>
|
||||||
<span class="normal">42</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cm">/* register & open dma device */</span>
|
<span class="normal">42</span>
|
||||||
|
<span class="normal">43</span>
|
||||||
|
<span class="normal">44</span>
|
||||||
|
<span class="normal">45</span>
|
||||||
|
<span class="normal">46</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cm">/* register & open dma device */</span>
|
||||||
<span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH3_INDEX</span><span class="p">,</span> <span class="s">"dma_ch3_i2s_rx"</span><span class="p">);</span>
|
<span class="n">dma_register</span><span class="p">(</span><span class="n">DMA0_CH3_INDEX</span><span class="p">,</span> <span class="s">"dma_ch3_i2s_rx"</span><span class="p">);</span>
|
||||||
<span class="n">dma_ch3</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"dma_ch3_i2s_rx"</span><span class="p">);</span>
|
<span class="n">dma_ch3</span> <span class="o">=</span> <span class="n">device_find</span><span class="p">(</span><span class="s">"dma_ch3_i2s_rx"</span><span class="p">);</span>
|
||||||
<span class="k">if</span> <span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span> <span class="p">{</span>
|
<span class="k">if</span> <span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span> <span class="p">{</span>
|
||||||
@ -469,10 +483,12 @@
|
|||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_ONCE_MODE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_ONCE_MODE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_I2S_RX</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_I2S_RX</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_DISABLE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_ENABLE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
||||||
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
<span class="n">device_open</span><span class="p">(</span><span class="n">dma_ch3</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||||
|
|
||||||
<span class="cm">/* connect i2s device and dma device */</span>
|
<span class="cm">/* connect i2s device and dma device */</span>
|
||||||
@ -490,6 +506,8 @@
|
|||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_ONCE_MODE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">transfer_mode</span> <span class="o">=</span> <span class="n">DMA_LLI_ONCE_MODE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_NONE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_I2S_TX</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_req</span> <span class="o">=</span> <span class="n">DMA_REQUEST_I2S_TX</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_ENABLE</span><span class="p">;</span>
|
||||||
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_addr_inc</span> <span class="o">=</span> <span class="n">DMA_ADDR_INCREMENT_DISABLE</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">dst_width</span> <span class="o">=</span> <span class="n">DMA_TRANSFER_WIDTH_32BIT</span><span class="p">;</span>
|
||||||
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
<span class="n">DMA_DEV</span><span class="p">(</span><span class="n">dma_ch2</span><span class="p">)</span><span class="o">-></span><span class="n">src_burst_size</span> <span class="o">=</span> <span class="n">DMA_BURST_4BYTE</span><span class="p">;</span>
|
||||||
@ -554,7 +572,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="highlight-bash notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
<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> <sdk_path>/bl_mcu_sdk
|
<span class="normal">2</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span> $ <span class="nb">cd</span> <sdk_path>/bl_mcu_sdk
|
||||||
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_avb <span class="nv">APP</span><span class="o">=</span>i2s_play_form_record
|
$ make <span class="nv">BOARD</span><span class="o">=</span>bl706_iot <span class="nv">APP</span><span class="o">=</span>i2s_play_form_record
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</td></tr></table></div>
|
</td></tr></table></div>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
|
@ -217,12 +217,23 @@
|
|||||||
</div></blockquote>
|
</div></blockquote>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">3.1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">3.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">PWM_CH2</span> <span class="o"><--></span> <span class="n">GPIO22</span>
|
<col style="width: 50%" />
|
||||||
</pre></div>
|
<col style="width: 50%" />
|
||||||
</div>
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>PWM_CH2</p></td>
|
||||||
|
<td><p>GPIO22</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<div class="figure align-default">
|
<div class="figure align-default">
|
||||||
<img alt="" src="../../../_images/blink_breath_sch1.png" />
|
<img alt="" src="../../../_images/blink_breath_sch1.png" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -248,15 +248,32 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">3.2.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">3.2.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">PWM_CH0</span> <span class="o"><--></span> <span class="n">GPIO10</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">PWM_CH1</span> <span class="o"><--></span> <span class="n">GPIO11</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">PWM_CH2</span> <span class="o"><--></span> <span class="n">GPIO12</span>
|
</colgroup>
|
||||||
<span class="n">PWM_CH3</span> <span class="o"><--></span> <span class="n">GPIO3</span>
|
<thead>
|
||||||
</pre></div>
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
</div>
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>PWM_CH0</p></td>
|
||||||
|
<td><p>GPIO10</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>PWM_CH1</p></td>
|
||||||
|
<td><p>GPIO11</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>PWM_CH2</p></td>
|
||||||
|
<td><p>GPIO12</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>PWM_CH3</p></td>
|
||||||
|
<td><p>GPIO3</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<div class="figure align-default" id="id7">
|
<div class="figure align-default" id="id7">
|
||||||
<img alt="" src="../../../_images/pwm_step_motor.png" />
|
<img alt="" src="../../../_images/pwm_step_motor.png" />
|
||||||
<p class="caption"><span class="caption-text">参考电路</span><a class="headerlink" href="#id7" title="永久链接至图片">¶</a></p>
|
<p class="caption"><span class="caption-text">参考电路</span><a class="headerlink" href="#id7" title="永久链接至图片">¶</a></p>
|
||||||
|
@ -214,16 +214,35 @@
|
|||||||
<p>本 demo 演示通过 SPI 驱动带 il9431 芯片的TFT 屏显示。</p>
|
<p>本 demo 演示通过 SPI 驱动带 il9431 芯片的TFT 屏显示。</p>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">6.1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">6.1.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">LCD_CS</span> <span class="o"><--></span> <span class="n">GPIO10</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">LCD_DC</span> <span class="o"><--></span> <span class="n">GPIO22</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">SPI_SCK</span> <span class="o"><--></span> <span class="n">GPIO19</span>
|
</colgroup>
|
||||||
<span class="n">SPI_MISO</span> <span class="o"><--></span> <span class="n">GPIO20</span>
|
<thead>
|
||||||
<span class="n">SPI_MOSI</span> <span class="o"><--></span> <span class="n">GPIO21</span>
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
</pre></div>
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
</div>
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>LCD_CS</p></td>
|
||||||
|
<td><p>GPIO10</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>LCD_DC</p></td>
|
||||||
|
<td><p>GPIO22</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>SPI_SCK</p></td>
|
||||||
|
<td><p>GPIO19</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>SPI_MISO</p></td>
|
||||||
|
<td><p>GPIO20</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-even"><td><p>SPI_MOSI</p></td>
|
||||||
|
<td><p>GPIO21</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h2><span class="section-number">6.1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">6.1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||||
@ -250,7 +269,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<div class="admonition note">
|
<div class="admonition note">
|
||||||
<p class="admonition-title">注解</p>
|
<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>
|
<p>为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 <code class="docutils literal notranslate"><span class="pre">bsp/board/bl706_avb/pinmux_config.h</span></code> 中 <code class="docutils literal notranslate"><span class="pre">pin_swap_enable</span></code> 为 0</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="highlight-C notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
<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"> 2</span>
|
||||||
|
@ -214,13 +214,26 @@
|
|||||||
<p>本 demo 基于 UART 外设轮询发送、接收 FIFO 中断模式编写。</p>
|
<p>本 demo 基于 UART 外设轮询发送、接收 FIFO 中断模式编写。</p>
|
||||||
<div class="section" id="id1">
|
<div class="section" id="id1">
|
||||||
<h2><span class="section-number">2.1.1. </span>硬件连接<a class="headerlink" href="#id1" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">2.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>
|
<table class="colwidths-given docutils align-default">
|
||||||
<span class="o">----------------------------------</span>
|
<colgroup>
|
||||||
<span class="n">UART0_TX</span> <span class="o"><--></span> <span class="n">GPIO14</span>
|
<col style="width: 50%" />
|
||||||
<span class="n">UART0_RX</span> <span class="o"><--></span> <span class="n">GPIO15</span>
|
<col style="width: 50%" />
|
||||||
</pre></div>
|
</colgroup>
|
||||||
</div>
|
<thead>
|
||||||
|
<tr class="row-odd"><th class="head"><p>GPIO function</p></th>
|
||||||
|
<th class="head"><p>GPIO pin</p></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="row-even"><td><p>UART0_TX</p></td>
|
||||||
|
<td><p>GPIO14</p></td>
|
||||||
|
</tr>
|
||||||
|
<tr class="row-odd"><td><p>UART0_RX</p></td>
|
||||||
|
<td><p>GPIO15</p></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="id2">
|
<div class="section" id="id2">
|
||||||
<h2><span class="section-number">2.1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
<h2><span class="section-number">2.1.2. </span>软件实现<a class="headerlink" href="#id2" title="永久链接至标题">¶</a></h2>
|
||||||
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/development_guide/source/_build/html/_images/pds31.png
Normal file
BIN
docs/development_guide/source/_build/html/_images/pds31.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
docs/development_guide/source/_build/html/_images/tiaomao.png
Normal file
BIN
docs/development_guide/source/_build/html/_images/tiaomao.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
@ -21,10 +21,12 @@ DMA 设备结构体定义
|
|||||||
struct device parent;
|
struct device parent;
|
||||||
uint8_t id;
|
uint8_t id;
|
||||||
uint8_t ch;
|
uint8_t ch;
|
||||||
uint8_t direction;
|
|
||||||
uint8_t transfer_mode;
|
uint8_t transfer_mode;
|
||||||
|
uint8_t direction;
|
||||||
uint32_t src_req;
|
uint32_t src_req;
|
||||||
uint32_t dst_req;
|
uint32_t dst_req;
|
||||||
|
uint8_t src_addr_inc;
|
||||||
|
uint8_t dst_addr_inc;
|
||||||
uint8_t src_burst_size;
|
uint8_t src_burst_size;
|
||||||
uint8_t dst_burst_size;
|
uint8_t dst_burst_size;
|
||||||
uint8_t src_width;
|
uint8_t src_width;
|
||||||
@ -35,16 +37,25 @@ DMA 设备结构体定义
|
|||||||
- **parent** 继承父类属性
|
- **parent** 继承父类属性
|
||||||
- **id** DMA id号,默认0,当前只有一个DMA
|
- **id** DMA id号,默认0,当前只有一个DMA
|
||||||
- **ch** 通道号
|
- **ch** 通道号
|
||||||
- **direction** 传输方向
|
|
||||||
- **transfer_mode** 传输模式
|
- **transfer_mode** 传输模式
|
||||||
|
- **direction** 传输方向
|
||||||
- **src_req** 源请求
|
- **src_req** 源请求
|
||||||
- **dst_req** 目标请求
|
- **dst_req** 目标请求
|
||||||
|
- **src_addr_inc** 源地址自增
|
||||||
|
- **dst_addr_inc** 目标地址自增
|
||||||
- **src_burst_size** 源突发字节数
|
- **src_burst_size** 源突发字节数
|
||||||
- **dst_burst_size** 目标突发字节数
|
- **dst_burst_size** 目标突发字节数
|
||||||
- **src_width** 源传输位宽
|
- **src_width** 源传输位宽
|
||||||
- **dst_width** 目标传输位宽
|
- **dst_width** 目标传输位宽
|
||||||
- **lli_cfg** 用来存储dma通道的一些信息,用户不用管
|
- **lli_cfg** 用来存储dma通道的一些信息,用户不用管
|
||||||
|
|
||||||
|
``transfer_mode`` 提供以下类型
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
|
||||||
|
#define DMA_LLI_ONCE_MODE 0
|
||||||
|
#define DMA_LLI_CYCLE_MODE 1
|
||||||
|
|
||||||
``direction`` 提供以下类型
|
``direction`` 提供以下类型
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
@ -56,13 +67,6 @@ DMA 设备结构体定义
|
|||||||
DMA_PERIPH_TO_PERIPH, /*!< DMA transfer tyep:peripheral to peripheral */
|
DMA_PERIPH_TO_PERIPH, /*!< DMA transfer tyep:peripheral to peripheral */
|
||||||
}dma_transfer_dir_type;
|
}dma_transfer_dir_type;
|
||||||
|
|
||||||
``transfer_mode`` 提供以下类型
|
|
||||||
|
|
||||||
.. code-block:: C
|
|
||||||
|
|
||||||
#define DMA_LLI_ONCE_MODE 0
|
|
||||||
#define DMA_LLI_CYCLE_MODE 1
|
|
||||||
|
|
||||||
``src_req`` 提供以下类型
|
``src_req`` 提供以下类型
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
@ -115,6 +119,20 @@ DMA 设备结构体定义
|
|||||||
#define DMA_REQUEST_USB_EP6 0x0000001E /*!< DMA request peripheral:USB EP6*/
|
#define DMA_REQUEST_USB_EP6 0x0000001E /*!< DMA request peripheral:USB EP6*/
|
||||||
#define DMA_REQUEST_USB_EP7 0x0000001F /*!< DMA request peripheral:USB EP7 */
|
#define DMA_REQUEST_USB_EP7 0x0000001F /*!< DMA request peripheral:USB EP7 */
|
||||||
|
|
||||||
|
``src_addr_inc`` 提供以下类型
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
|
||||||
|
#define DMA_ADDR_INCREMENT_DISABLE 0 /*!< Addr increment mode disable */
|
||||||
|
#define DMA_ADDR_INCREMENT_ENABLE 1 /*!< Addr increment mode enable */
|
||||||
|
|
||||||
|
``dst_addr_inc`` 提供以下类型
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
|
||||||
|
#define DMA_ADDR_INCREMENT_DISABLE 0 /*!< Addr increment mode disable */
|
||||||
|
#define DMA_ADDR_INCREMENT_ENABLE 1 /*!< Addr increment mode enable */
|
||||||
|
|
||||||
``src_burst_size`` 提供以下类型
|
``src_burst_size`` 提供以下类型
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
@ -162,13 +180,17 @@ DMA 设备参数配置表
|
|||||||
#define DMA0_CH0_CONFIG \
|
#define DMA0_CH0_CONFIG \
|
||||||
{ \
|
{ \
|
||||||
.id = 0, \
|
.id = 0, \
|
||||||
.ch = 0,\
|
.ch = 7, \
|
||||||
.direction = DMA_MEMORY_TO_MEMORY,\
|
.direction = DMA_MEMORY_TO_MEMORY, \
|
||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_NONE, \
|
.dst_req = DMA_REQUEST_NONE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -6,8 +6,18 @@
|
|||||||
examples 的目录结构
|
examples 的目录结构
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
在 ``bl_mcu_sdk/examples`` 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 ``CMakeList.txt`` 以及该 case 相关的源码
|
在 ``bl_mcu_sdk/examples`` 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设名称,第二层通常为该外设具体的某一种测试例程,该目录下通常还包含一个 ``CMakeList.txt`` 以及该 case 相关的源码。
|
||||||
|
|
||||||
|
可供用户使用的 cmake 变量如下:
|
||||||
|
|
||||||
|
- mains:main 函数入口
|
||||||
|
- TARGET_REQUIRED_SRCS:没有编译成 lib 的外部 c 文件
|
||||||
|
- TARGET_REQUIRED_PRIVATE_INCLUDE:外部 c 文件需要的头文件路径
|
||||||
|
- TARGET_REQUIRED_LIBS:目标需要的 lib 库名称,可以是 cmake 通过 generate_bin 生成的 target 或者外部导入的 lib 库
|
||||||
|
- TARGET_REQUIRED_PRIVATE_OPTIONS:私有 c flag
|
||||||
|
- LINKER_SCRIPT:重新定义链接脚本
|
||||||
|
- GLOBAL_C_FLAGS:全局 c flag
|
||||||
|
- GLOBAL_LD_FLAGS:全局 ld flag
|
||||||
|
|
||||||
添加单个源文件工程
|
添加单个源文件工程
|
||||||
------------------------
|
------------------------
|
||||||
@ -131,7 +141,7 @@ examples 的目录结构
|
|||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
make BOARD=bl706_iot APP=gpio_case SUPPORT_FREERTOS=y
|
make BOARD=bl706_iot APP=gpio_case
|
||||||
|
|
||||||
添加新工程并设置私有编译选项(gcc option)
|
添加新工程并设置私有编译选项(gcc option)
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
|
@ -68,5 +68,6 @@ BL MCU SDK 将为您提供博流 BL70X 系列 MCU 开发的全方位支持。
|
|||||||
samples/advance samples/lowpower_demo
|
samples/advance samples/lowpower_demo
|
||||||
samples/advance samples/boot2_iap_info
|
samples/advance samples/boot2_iap_info
|
||||||
samples/advance samples/ble_scan_demo
|
samples/advance samples/ble_scan_demo
|
||||||
|
samples/advance samples/ble_pds
|
||||||
samples/advance samples/emac/index
|
samples/advance samples/emac/index
|
||||||
|
|
||||||
|
@ -0,0 +1,132 @@
|
|||||||
|
BLE PDS31
|
||||||
|
=======================
|
||||||
|
|
||||||
|
本 demo 基于 **bl702** 演示 **ble PDS31**
|
||||||
|
|
||||||
|
准备工具
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
- 一块 bl702 开发板 + 手机 app
|
||||||
|
|
||||||
|
软件实现
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
BLE PDS31 软件实现
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
- 软件代码见 ``examples/ble/ble_pds``
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
#define configUSE_TICKLESS_IDLE 1
|
||||||
|
|
||||||
|
- BLE PDS31 function 需要开启freertos tickless 功能 , 见 ``components/freertos/portable/gcc/risc-v/bl702/FreeRTOSConfig.h``
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
int ble_start_adv(void)
|
||||||
|
{
|
||||||
|
struct bt_le_adv_param adv_param = {
|
||||||
|
//options:3, connectable undirected, adv one time
|
||||||
|
.options = 3, \
|
||||||
|
.interval_min = 0x280, \
|
||||||
|
.interval_max = 0x280, \
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
char *adv_name = "BL_PDS_TEST_01"; // This name must be the same as adv_name in ble_central
|
||||||
|
uint8_t data[1] = {(BT_LE_AD_LIMITED | BT_LE_AD_NO_BREDR)};
|
||||||
|
uint8_t data_uuid[2] = {0x12, 0x18};//0x1812
|
||||||
|
uint8_t data_appearance[2] = {0x80, 0x01};//0x0180
|
||||||
|
uint8_t data_manu[4] = {0x71, 0x01, 0x04, 0x13};
|
||||||
|
struct bt_data adv_data[] = {
|
||||||
|
BT_DATA(BT_DATA_FLAGS, data, 1),
|
||||||
|
BT_DATA(BT_DATA_UUID16_ALL, data_uuid, sizeof(data_uuid)),
|
||||||
|
BT_DATA(BT_DATA_GAP_APPEARANCE, data_appearance, sizeof(data_appearance)),
|
||||||
|
BT_DATA(BT_DATA_NAME_COMPLETE, adv_name, strlen(adv_name)),
|
||||||
|
BT_DATA(BT_DATA_MANUFACTURER_DATA, data_manu, sizeof(data_manu))
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return bt_le_adv_start(&adv_param, adv_data, ARRAY_SIZE(adv_data), NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
- 在 ``ble_start_adv`` 函数中, ``adv_name`` 设置这次广播的设备名称,设备就开始进行广播
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
void bt_enable_cb(int err)
|
||||||
|
{
|
||||||
|
MSG("ble_tp_init\r\n");
|
||||||
|
ble_tp_init();
|
||||||
|
#if defined(CONFIG_BT_OAD_SERVER)
|
||||||
|
oad_service_enable(app_check_oad);
|
||||||
|
#endif
|
||||||
|
MSG("Start adv\r\n");
|
||||||
|
ble_start_adv();
|
||||||
|
MSG("Advertising.........\r\n");
|
||||||
|
pds_start = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- 广播开始之后, 在 ``bt_enable_cb`` 中, ``pds_start = true`` 是允许进入PDS31
|
||||||
|
|
||||||
|
- 连接成功后,在 ``ble_tp_connected`` 函数, ``pds_start = false`` 会关闭pds31.
|
||||||
|
|
||||||
|
- 如果想要连接成功后,继续进入PDS31,需要板子上带有external xtal 32K. 配置以下设置, 当connection interval > 100ms 的时候,会进入PDS31.
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
#define XTAL_32K_TYPE INTERNAL_XTAL_32K
|
||||||
|
|
||||||
|
- pds31 唤醒时钟源配置,见 ``bsp/board/bl706_iot/clock_config.h``
|
||||||
|
|
||||||
|
.. code-block:: C
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
#define BLE_CONN_PDS 1
|
||||||
|
|
||||||
|
- 连接成功后进入PDS31配置,见 ``examples/ble/ble_pds/ble_peripheral_tp_server.c``
|
||||||
|
|
||||||
|
|
||||||
|
编译和烧录
|
||||||
|
-----------------------------
|
||||||
|
- **命令行编译**
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
|
$ make build BOARD=bl706_iot SUPPORT_BLECONTROLLER_LIB=m0s1p SUPPORT_FAST_WAKEUP=y SUPPORT_HW_SEC_ENG_DISABLE=y
|
||||||
|
|
||||||
|
|
||||||
|
- **烧录**
|
||||||
|
|
||||||
|
详见 :ref:`bl_dev_cube`
|
||||||
|
|
||||||
|
实验现象
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
- **手机连接 bl702**
|
||||||
|
|
||||||
|
.. figure:: img/phone_pds_connect.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
- 连接成功,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/phone_connected.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
- 进入PDS31 显示
|
||||||
|
|
||||||
|
.. figure:: img/pds31.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -11,17 +11,22 @@ FatFs 文件系统读写(SD 卡)
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_AVB 开发板,连接方式如下
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
SD_CS <--> GPIO10
|
|
||||||
SPI_SCK <--> GPIO19
|
|
||||||
SPI_MISO <--> GPIO20
|
|
||||||
SPI_MOSI <--> GPIO21
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - SD_CS
|
||||||
|
- GPIO10
|
||||||
|
* - SPI_SCK
|
||||||
|
- GPIO19
|
||||||
|
* - SPI_MISO
|
||||||
|
- GPIO20
|
||||||
|
* - SPI_MOSI
|
||||||
|
- GPIO21
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -88,6 +93,10 @@ FatFs 文件系统读写(SD 卡)
|
|||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_SPI0_TX, \
|
.dst_req = DMA_REQUEST_SPI0_TX, \
|
||||||
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
@ -104,6 +113,10 @@ FatFs 文件系统读写(SD 卡)
|
|||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_SPI0_RX, \
|
.src_req = DMA_REQUEST_SPI0_RX, \
|
||||||
.dst_req = DMA_REQUEST_NONE, \
|
.dst_req = DMA_REQUEST_NONE, \
|
||||||
|
.src_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \
|
||||||
|
.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
|
@ -12,15 +12,18 @@ Shell 命令行调试
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
UART0_TX <--> GPIO14
|
|
||||||
UART0_RX <--> GPIO15
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - UART0_TX
|
||||||
|
- GPIO14
|
||||||
|
* - UART0_RX
|
||||||
|
- GPIO15
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-------------------------
|
-------------------------
|
||||||
|
@ -6,7 +6,7 @@ USB Device 应用
|
|||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
CDC - 虚拟串口<usbd_cdc>
|
CDC - 虚拟串口<usbd_cdc>
|
||||||
MSC - U 盘<usbd_msc>
|
MSC - U 盘升级<usbd_msc>
|
||||||
HID - 键盘&鼠标<usbd_hid>
|
HID - 键盘&鼠标<usbd_hid>
|
||||||
VIDEO - 摄像头<usbd_video>
|
VIDEO - 摄像头<usbd_video>
|
||||||
AUDIO - 麦克风<usbd_audio>
|
AUDIO - 麦克风<usbd_audio>
|
@ -7,14 +7,14 @@ USB大容量存储设备类(The USB mass storage device class)是一种计
|
|||||||
|
|
||||||
MSC 协议介绍参考 `USB 官方文档 <https://www.usb.org/documents>`_。
|
MSC 协议介绍参考 `USB 官方文档 <https://www.usb.org/documents>`_。
|
||||||
|
|
||||||
bootloader 我们将其编译后烧录在 0x2000 开始的物理地址,工具默认也是这个地址。
|
bootloader 我们将其编译后烧录在 flash 0x2000 开始的物理地址,工具默认也是这个地址。
|
||||||
|
|
||||||
.. figure:: img/usb_msc2.png
|
|
||||||
|
|
||||||
我们使用 flash 的 48K开始的地方,用来模拟 u 盘,u 盘大小为 256K(64 个扇区,每个扇区 4KB ),根据文件系统格式,可以知道,数据的地址在 u 盘的第 10 个扇区,也即 APP 的入口地址。BootLoader 与 APP 分区表如下:
|
|
||||||
|
|
||||||
.. figure:: img/usb_msc.png
|
.. figure:: img/usb_msc.png
|
||||||
|
|
||||||
|
我们使用 flash 物理地址 0x0000c000 (48K) 开始的地方,用来模拟 u 盘,u 盘大小为 256K(64 个扇区,每个扇区 4KB ),根据文件系统格式,可以知道,数据的地址在 u 盘的第 10 个扇区(0x16000),也即 APP 的入口地址。BootLoader 与 APP 分区表如下:
|
||||||
|
|
||||||
|
.. figure:: img/usb_msc2.png
|
||||||
|
|
||||||
准备工具
|
准备工具
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
@ -25,27 +25,44 @@ BL706 AVB + GC0308摄像头模块 + windows 相机
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_AVB 开发板,连接方式如下
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
CAM <--> GPIO0
|
* - CAM
|
||||||
CAM <--> GPIO1
|
- GPIO0
|
||||||
CAM <--> GPIO2
|
* - CAM
|
||||||
CAM <--> GPIO3
|
- GPIO1
|
||||||
CAM <--> GPIO4
|
* - CAM
|
||||||
CAM <--> GPIO5
|
- GPIO2
|
||||||
CAM <--> GPIO6
|
* - CAM
|
||||||
USB_DP <--> GPIO7
|
- GPIO3
|
||||||
USB_DM <--> GPIO8
|
* - CAM
|
||||||
CLK_OUT <--> GPIO9
|
- GPIO4
|
||||||
I2C_SCL <--> GPIO11
|
* - CAM
|
||||||
I2C_SDA <--> GPIO16
|
- GPIO5
|
||||||
CAM <--> GPIO29
|
* - CAM
|
||||||
CAM <--> GPIO30
|
- GPIO6
|
||||||
CAM <--> GPIO31
|
* - USB_DP
|
||||||
|
- GPIO7
|
||||||
|
* - USB_DM
|
||||||
|
- GPIO8
|
||||||
|
* - CLK_OUT
|
||||||
|
- GPIO9
|
||||||
|
* - I2C_SCL
|
||||||
|
- GPIO11
|
||||||
|
* - I2C_SDA
|
||||||
|
- GPIO16
|
||||||
|
* - CAM
|
||||||
|
- GPIO29
|
||||||
|
* - CAM
|
||||||
|
- GPIO30
|
||||||
|
* - CAM
|
||||||
|
- GPIO31
|
||||||
|
|
||||||
.. note:: 注意 706 AVB FUN1 的跳冒不要接,默认连接到摄像头引脚,如果接了则连接到了 i2s codec
|
.. note:: 注意 706 AVB FUN1 的跳冒不要接,默认连接到摄像头引脚,如果接了则连接到了 i2s codec
|
||||||
|
|
||||||
@ -116,6 +133,10 @@ BL706 AVB + GC0308摄像头模块 + windows 相机
|
|||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_UART1_TX, \
|
.dst_req = DMA_REQUEST_UART1_TX, \
|
||||||
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.src_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
.dst_width = DMA_TRANSFER_WIDTH_8BIT, \
|
||||||
}
|
}
|
||||||
@ -128,7 +149,16 @@ BL706 AVB + GC0308摄像头模块 + windows 相机
|
|||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
|
DMA_DEV(dma_ch2)->direction = DMA_MEMORY_TO_PERIPH;
|
||||||
|
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
|
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_USB_EP1;
|
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_USB_EP1;
|
||||||
|
DMA_DEV(dma_ch2)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
|
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_16BYTE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_burst_size = DMA_BURST_1BYTE;
|
||||||
|
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_8BIT;
|
||||||
|
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_8BIT;
|
||||||
device_open(dma_ch2, 0);
|
device_open(dma_ch2, 0);
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
|
@ -5,13 +5,16 @@ ADC - 按键检测电压
|
|||||||
|
|
||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
本 demo 基于 BL706_AVB 开发板:
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
ADC CH8 <--> GPIO18
|
* - ADC CH8
|
||||||
|
- GPIO18
|
||||||
|
|
||||||
**分压电路:**
|
**分压电路:**
|
||||||
|
|
||||||
|
@ -22,13 +22,17 @@ DMA - RAM间数据搬运
|
|||||||
#define DMA0_CH0_CONFIG \
|
#define DMA0_CH0_CONFIG \
|
||||||
{ \
|
{ \
|
||||||
.id = 0, \
|
.id = 0, \
|
||||||
.ch = 0,\
|
.ch = 0, \
|
||||||
.direction = DMA_MEMORY_TO_MEMORY,\
|
.direction = DMA_MEMORY_TO_MEMORY, \
|
||||||
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
.transfer_mode = DMA_LLI_ONCE_MODE, \
|
||||||
.src_req = DMA_REQUEST_NONE, \
|
.src_req = DMA_REQUEST_NONE, \
|
||||||
.dst_req = DMA_REQUEST_NONE, \
|
.dst_req = DMA_REQUEST_NONE, \
|
||||||
.src_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
.dst_width = DMA_TRANSFER_WIDTH_32BIT , \
|
.dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE, \
|
||||||
|
.src_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.dst_burst_size = DMA_BURST_1BYTE, \
|
||||||
|
.src_width = DMA_TRANSFER_WIDTH_32BIT, \
|
||||||
|
.dst_width = DMA_TRANSFER_WIDTH_32BIT, \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -6,17 +6,22 @@ GPIO 输出 - 流水灯
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
D0 <--> GPIO22
|
|
||||||
D1 <--> GPIO29
|
|
||||||
D2 <--> GPIO30
|
|
||||||
D3 <--> GPIO31
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - D0
|
||||||
|
- GPIO22
|
||||||
|
* - D1
|
||||||
|
- GPIO29
|
||||||
|
* - D2
|
||||||
|
- GPIO30
|
||||||
|
* - D3
|
||||||
|
- GPIO31
|
||||||
|
|
||||||
.. figure:: img/blink_breath_sch.png
|
.. figure:: img/blink_breath_sch.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -6,13 +6,16 @@ GPIO 中断 - 按键检测
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于BL706_IOT开发板,自行添加按键电路,连接方式如下
|
本 demo 基于BL706_IOT开发板,自行添加按键电路,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
SW1 <--> GPIO11
|
* - SW1
|
||||||
|
- GPIO11
|
||||||
|
|
||||||
.. figure:: img/button_sch.png
|
.. figure:: img/button_sch.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -4,15 +4,18 @@ I2C - AT24CXX 读写
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,自行添加 AT24CXX 电路,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,自行添加 AT24CXX 电路,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
I2C_SCL <--> GPIO11
|
|
||||||
I2C_SDA <--> GPIO16
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - I2C_SCL
|
||||||
|
- GPIO11
|
||||||
|
* - I2C_SDA
|
||||||
|
- GPIO16
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
@ -6,7 +6,7 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
准备工具
|
准备工具
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
- 一块 bl702 开发板 +DMIC音频子板 + PC端 Audio_Cube 工具
|
- 一块 bl702 开发板 + DMIC音频子板 + PC 端 Audio_Cube 工具
|
||||||
|
|
||||||
|
|
||||||
硬件连接
|
硬件连接
|
||||||
@ -33,6 +33,12 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
* - UART0_RX
|
* - UART0_RX
|
||||||
- GPIO14
|
- GPIO14
|
||||||
|
|
||||||
|
如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/tiaomao.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
|
||||||
本 demo 用到的内部外设资源如下:
|
本 demo 用到的内部外设资源如下:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -59,21 +65,20 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
|
|
||||||
本文档不再详细功能实现的细节,仅概述功能过程,可以参考 I2S 与 UART 相关文档。
|
本文档不再详细功能实现的细节,仅概述功能过程,可以参考 I2S 与 UART 相关文档。
|
||||||
|
|
||||||
配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h`` 中的宏定义选项:
|
配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h`` 中的宏定义选项:
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
|
||||||
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
||||||
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
|
||||||
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
||||||
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
|
||||||
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
||||||
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
||||||
|
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
||||||
|
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
||||||
|
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
||||||
|
|
||||||
编译和烧录
|
编译和烧录
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -90,7 +95,7 @@ I2S - 使用DMIC配合audio cube实现在线录音
|
|||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
$ cd <sdk_path>/bl_mcu_sdk
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
$ make BOARD=bl706_avb APP=audio_cube
|
$ make BOARD=bl706_iot APP=audio_cube
|
||||||
|
|
||||||
- **烧录**
|
- **烧录**
|
||||||
详见 :ref:`bl_dev_cube`
|
详见 :ref:`bl_dev_cube`
|
||||||
|
@ -30,6 +30,12 @@ I2S - flash 内置音频播放
|
|||||||
* - I2C_SDA
|
* - I2C_SDA
|
||||||
- GPIO11
|
- GPIO11
|
||||||
|
|
||||||
|
如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/tiaomao.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
|
|
||||||
本 demo 用到的内部外设资源如下:
|
本 demo 用到的内部外设资源如下:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -59,13 +65,15 @@ I2S - flash 内置音频播放
|
|||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
|
||||||
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
||||||
|
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
||||||
|
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
||||||
|
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
||||||
|
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
||||||
|
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
||||||
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
|
||||||
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
|
||||||
|
|
||||||
配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
||||||
|
|
||||||
@ -111,7 +119,7 @@ I2S 的配置与使能:
|
|||||||
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
||||||
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
||||||
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
||||||
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_avb/peripheral_config.h`` 中预设的参数
|
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_iot/peripheral_config.h`` 中预设的参数
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
@ -144,8 +152,12 @@ DMA 的配置与使能
|
|||||||
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_CYCLE_MODE;
|
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_CYCLE_MODE;
|
||||||
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
||||||
|
DMA_DEV(dma_ch2)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_16BIT;
|
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_16BIT;
|
||||||
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_16BIT;
|
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_16BIT;
|
||||||
|
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_burst_size = DMA_BURST_4BYTE;
|
||||||
device_open(dma_ch2, 0);
|
device_open(dma_ch2, 0);
|
||||||
|
|
||||||
/* connect i2s device and dma device */
|
/* connect i2s device and dma device */
|
||||||
@ -183,7 +195,7 @@ DMA 的配置与使能
|
|||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
$ cd <sdk_path>/bl_mcu_sdk
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
$ make BOARD=bl706_avb APP=i2s_play_form_flash
|
$ make BOARD=bl706_iot APP=i2s_play_form_flash
|
||||||
|
|
||||||
- **烧录**
|
- **烧录**
|
||||||
详见 :ref:`bl_dev_cube`
|
详见 :ref:`bl_dev_cube`
|
||||||
|
@ -30,6 +30,11 @@ I2S - 录音回环播放
|
|||||||
* - I2C_SDA
|
* - I2C_SDA
|
||||||
- GPIO11
|
- GPIO11
|
||||||
|
|
||||||
|
如果使用的是BL706_AVB板,请确保FUN1 FUN2两个跳帽处于短接的状态,如下图所示
|
||||||
|
|
||||||
|
.. figure:: img/tiaomao.png
|
||||||
|
:alt:
|
||||||
|
|
||||||
- 本 demo 用到的内部外设资源如下:
|
- 本 demo 用到的内部外设资源如下:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -56,18 +61,20 @@ I2S - 录音回环播放
|
|||||||
|
|
||||||
- 软件代码见 ``examples/i2s/i2s_play_form_record``
|
- 软件代码见 ``examples/i2s/i2s_play_form_record``
|
||||||
|
|
||||||
- 配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h`` 中的宏定义选项:
|
配置 ``I2S, I2C, CLK_OUT(MCLK)`` 相关复用引脚,见 ``bsp/board/bl706_iot/pinmux_config.h`` 中的宏定义选项:
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
|
||||||
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO3_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO4_FUNC GPIO_FUN_I2S
|
||||||
|
#define CONFIG_GPIO6_FUNC GPIO_FUN_CLK_OUT
|
||||||
|
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
||||||
|
#define CONFIG_GPIO14_FUNC GPIO_FUN_UART0_TX
|
||||||
|
#define CONFIG_GPIO15_FUNC GPIO_FUN_UART0_RX
|
||||||
|
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
||||||
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO29_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
#define CONFIG_GPIO30_FUNC GPIO_FUN_I2S
|
||||||
#define CONFIG_GPIO11_FUNC GPIO_FUN_I2C
|
|
||||||
#define CONFIG_GPIO16_FUNC GPIO_FUN_I2C
|
|
||||||
|
|
||||||
- 配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
- 配置 ES8388 的参数,初始化 ES8388 ,其中会用到 I2C 外设,具体过程可见 ``bsp/bsp_common/es8388/es8388.c``
|
||||||
|
|
||||||
@ -115,7 +122,7 @@ I2S 的配置与使能:
|
|||||||
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
- 先调用 ``i2s_register`` 函数注册 ``I2S`` 设备
|
||||||
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
- 然后通过 ``find`` 函数找到设备对应的句柄,保存于 ``i2s`` 中
|
||||||
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
- 最后填写配置参数后,使用 ``device_open`` 来打开 ``I2S`` 设备
|
||||||
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_avb/peripheral_config.h`` 中预设的参数
|
- 如果不填写配置参数,会默认使用 ``bsp/board/bl706_iot/peripheral_config.h`` 中预设的参数
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
@ -151,10 +158,12 @@ DMA 的配置与使能
|
|||||||
DMA_DEV(dma_ch3)->transfer_mode = DMA_LLI_ONCE_MODE;
|
DMA_DEV(dma_ch3)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
DMA_DEV(dma_ch3)->src_req = DMA_REQUEST_I2S_RX;
|
DMA_DEV(dma_ch3)->src_req = DMA_REQUEST_I2S_RX;
|
||||||
DMA_DEV(dma_ch3)->dst_req = DMA_REQUEST_NONE;
|
DMA_DEV(dma_ch3)->dst_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch3)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch3)->src_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
DMA_DEV(dma_ch3)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch3)->dst_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
DMA_DEV(dma_ch3)->src_burst_size = DMA_BURST_4BYTE;
|
DMA_DEV(dma_ch3)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
DMA_DEV(dma_ch3)->dst_burst_size = DMA_BURST_4BYTE;
|
DMA_DEV(dma_ch3)->dst_burst_size = DMA_BURST_4BYTE;
|
||||||
|
DMA_DEV(dma_ch3)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
|
DMA_DEV(dma_ch3)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
device_open(dma_ch3, 0);
|
device_open(dma_ch3, 0);
|
||||||
|
|
||||||
/* connect i2s device and dma device */
|
/* connect i2s device and dma device */
|
||||||
@ -172,6 +181,8 @@ DMA 的配置与使能
|
|||||||
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE;
|
DMA_DEV(dma_ch2)->transfer_mode = DMA_LLI_ONCE_MODE;
|
||||||
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
DMA_DEV(dma_ch2)->src_req = DMA_REQUEST_NONE;
|
||||||
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
DMA_DEV(dma_ch2)->dst_req = DMA_REQUEST_I2S_TX;
|
||||||
|
DMA_DEV(dma_ch2)->src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||||
|
DMA_DEV(dma_ch2)->dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||||
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch2)->src_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
DMA_DEV(dma_ch2)->dst_width = DMA_TRANSFER_WIDTH_32BIT;
|
||||||
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_4BYTE;
|
DMA_DEV(dma_ch2)->src_burst_size = DMA_BURST_4BYTE;
|
||||||
@ -226,7 +237,7 @@ DMA 中断回调函数
|
|||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
$ cd <sdk_path>/bl_mcu_sdk
|
$ cd <sdk_path>/bl_mcu_sdk
|
||||||
$ make BOARD=bl706_avb APP=i2s_play_form_record
|
$ make BOARD=bl706_iot APP=i2s_play_form_record
|
||||||
|
|
||||||
- **烧录**
|
- **烧录**
|
||||||
|
|
||||||
|
@ -6,13 +6,16 @@ PWM - 呼吸灯
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于BL706_IOT开发板,连接方式如下
|
本 demo 基于BL706_IOT开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
PWM_CH2 <--> GPIO22
|
* - PWM_CH2
|
||||||
|
- GPIO22
|
||||||
|
|
||||||
.. figure:: img/blink_breath_sch.png
|
.. figure:: img/blink_breath_sch.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -42,16 +42,22 @@ PWM - 驱动步进电机
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于BL706_IOT开发板,连接方式如下
|
本 demo 基于BL706_IOT开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
PWM_CH0 <--> GPIO10
|
* - PWM_CH0
|
||||||
PWM_CH1 <--> GPIO11
|
- GPIO10
|
||||||
PWM_CH2 <--> GPIO12
|
* - PWM_CH1
|
||||||
PWM_CH3 <--> GPIO3
|
- GPIO11
|
||||||
|
* - PWM_CH2
|
||||||
|
- GPIO12
|
||||||
|
* - PWM_CH3
|
||||||
|
- GPIO3
|
||||||
|
|
||||||
.. figure:: img/pwm_step_motor.png
|
.. figure:: img/pwm_step_motor.png
|
||||||
:alt:
|
:alt:
|
||||||
|
@ -6,18 +6,24 @@ SPI - TFT LCD 显示
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_AVB 开发板,连接方式如下
|
本 demo 基于 BL706_AVB 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
GPIO function GPIO pin
|
:header-rows: 1
|
||||||
----------------------------------
|
|
||||||
LCD_CS <--> GPIO10
|
|
||||||
LCD_DC <--> GPIO22
|
|
||||||
SPI_SCK <--> GPIO19
|
|
||||||
SPI_MISO <--> GPIO20
|
|
||||||
SPI_MOSI <--> GPIO21
|
|
||||||
|
|
||||||
|
* - GPIO function
|
||||||
|
- GPIO pin
|
||||||
|
* - LCD_CS
|
||||||
|
- GPIO10
|
||||||
|
* - LCD_DC
|
||||||
|
- GPIO22
|
||||||
|
* - SPI_SCK
|
||||||
|
- GPIO19
|
||||||
|
* - SPI_MISO
|
||||||
|
- GPIO20
|
||||||
|
* - SPI_MOSI
|
||||||
|
- GPIO21
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@ -41,7 +47,7 @@ SPI - TFT LCD 显示
|
|||||||
|
|
||||||
- 配置 ``SPI`` 设备复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h``,,如有改动,请自行修改
|
- 配置 ``SPI`` 设备复用引脚,见 ``bsp/board/bl706_avb/pinmux_config.h``,,如有改动,请自行修改
|
||||||
|
|
||||||
.. note:: 为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 ``drivers/bl702_driver/hal_drv/default_config/spi_config.h`` 中 ``SPI_SWAP_ENABLE`` 为 0
|
.. note:: 为适配 bl702_avb 硬件, SPI 的 MOSI 和 MISO 默认进行了调换,如果想要恢复默认,修改 ``bsp/board/bl706_avb/pinmux_config.h`` 中 ``pin_swap_enable`` 为 0
|
||||||
|
|
||||||
.. code-block:: C
|
.. code-block:: C
|
||||||
:linenos:
|
:linenos:
|
||||||
|
@ -6,14 +6,18 @@ UART - 数据自收发
|
|||||||
硬件连接
|
硬件连接
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
本 demo 基于 BL706_IOT 开发板,连接方式如下
|
本 demo 基于 BL706_IOT 开发板,连接方式如下:
|
||||||
|
|
||||||
::
|
.. list-table::
|
||||||
|
:widths: 30 30
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
GPIO function GPIO pin
|
* - GPIO function
|
||||||
----------------------------------
|
- GPIO pin
|
||||||
UART0_TX <--> GPIO14
|
* - UART0_TX
|
||||||
UART0_RX <--> GPIO15
|
- GPIO14
|
||||||
|
* - UART0_RX
|
||||||
|
- GPIO15
|
||||||
|
|
||||||
软件实现
|
软件实现
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user