mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-23 21:29:17 +00:00
[doc] update demo rst
This commit is contained in:
parent
dd161b698b
commit
24d03e890b
42 changed files with 2148 additions and 691 deletions
100
docs/source/samples/peripherals/dac/dac_dma.rst
Normal file
100
docs/source/samples/peripherals/dac/dac_dma.rst
Normal file
|
@ -0,0 +1,100 @@
|
|||
DAC - dma
|
||||
====================
|
||||
|
||||
本 demo 主要介绍基于 DAC DMA 模式生成正弦波。
|
||||
|
||||
硬件连接
|
||||
-----------------------------
|
||||
|
||||
本 demo 使用到的 gpio 参考 ``board_dac_gpio_init`` 。
|
||||
|
||||
软件实现
|
||||
-----------------------------
|
||||
|
||||
更详细的代码请参考 **examples/peripherals/dac/dac_dma**
|
||||
|
||||
.. code-block:: C
|
||||
:linenos:
|
||||
|
||||
board_init();
|
||||
|
||||
- ``board_init`` 中会开启 DAC IP 时钟,并选择 DAC 时钟源和分频。
|
||||
|
||||
.. code-block:: C
|
||||
:linenos:
|
||||
|
||||
board_dac_gpio_init();
|
||||
|
||||
- 配置相关引脚为 `DAC` 功能
|
||||
|
||||
.. code-block:: C
|
||||
:linenos:
|
||||
|
||||
dac = bflb_device_get_by_name("dac");
|
||||
|
||||
/* 512K / 1 = 512K */
|
||||
bflb_dac_init(dac, DAC_CLK_DIV_1);
|
||||
bflb_dac_channel_enable(dac, DAC_CHANNEL_A);
|
||||
bflb_dac_channel_enable(dac, DAC_CHANNEL_B);
|
||||
bflb_dac_link_txdma(dac, true);
|
||||
|
||||
- 获取 `dac` 句柄,并初始化 dac 频率为 512K
|
||||
- ``bflb_dac_channel_enable`` 配置 dac 通道信息,当前使用的 A 通道和 B 通道
|
||||
- ``bflb_dac_link_txdma`` 开启 dac txdma 功能
|
||||
|
||||
.. code-block:: C
|
||||
:linenos:
|
||||
|
||||
dma0_ch0 = bflb_device_get_by_name("dma0_ch0");
|
||||
|
||||
struct bflb_dma_channel_config_s config;
|
||||
|
||||
config.direction = DMA_MEMORY_TO_PERIPH;
|
||||
config.src_req = DMA_REQUEST_NONE;
|
||||
config.dst_req = DMA_REQUEST_DAC;
|
||||
config.src_addr_inc = DMA_ADDR_INCREMENT_ENABLE;
|
||||
config.dst_addr_inc = DMA_ADDR_INCREMENT_DISABLE;
|
||||
config.src_burst_count = DMA_BURST_INCR1;
|
||||
config.dst_burst_count = DMA_BURST_INCR1;
|
||||
config.src_width = DMA_DATA_WIDTH_16BIT;
|
||||
config.dst_width = DMA_DATA_WIDTH_16BIT;
|
||||
bflb_dma_channel_init(dma0_ch0, &config);
|
||||
|
||||
bflb_dma_channel_irq_attach(dma0_ch0, dma0_ch0_isr, NULL);
|
||||
|
||||
- 配置 `DMA CH0` 为 `DAC`
|
||||
- 注册 dma 通道中断
|
||||
|
||||
.. code-block:: C
|
||||
:linenos:
|
||||
|
||||
struct bflb_dma_channel_lli_pool_s lli[1]; /* max trasnfer size 4064 * 1 */
|
||||
struct bflb_dma_channel_lli_transfer_s transfers[1];
|
||||
|
||||
transfers[0].src_addr = (uint32_t)SIN_LIST;
|
||||
transfers[0].dst_addr = (uint32_t)DMA_ADDR_DAC_TDR;
|
||||
transfers[0].nbytes = sizeof(SIN_LIST);
|
||||
bflb_l1c_dcache_clean_range((void*)SIN_LIST,sizeof(SIN_LIST));
|
||||
|
||||
bflb_dma_channel_lli_reload(dma0_ch0, lli, 1, transfers, 1);
|
||||
bflb_dma_channel_start(dma0_ch0);
|
||||
|
||||
while (dma_tc_flag0 != 1) {
|
||||
bflb_mtimer_delay_ms(1);
|
||||
}
|
||||
|
||||
- 分配一块 lli 内存池,个数为1,最多可以传输 4064 * 1 字节
|
||||
- 配置一块内存进行传输
|
||||
- 调用 ``bflb_dma_channel_lli_reload`` 初始化
|
||||
- 调用 ``bflb_dma_channel_start`` 启动传输
|
||||
- 等待传输完成并进入中断
|
||||
|
||||
编译和烧录
|
||||
-----------------------------
|
||||
|
||||
参考 :ref:`linux_cmd` 或者 :ref:`windows_cmd`
|
||||
|
||||
实验现象
|
||||
-----------------------------
|
||||
|
||||
DAC Channel A 和 B 对应的 GPIO 输出正弦波。
|
|
@ -6,20 +6,7 @@ DAC - poll
|
|||
硬件连接
|
||||
-----------------------------
|
||||
|
||||
本 demo 使用到的 gpio 如下表:
|
||||
|
||||
.. table:: GPIO 口
|
||||
:widths: 30, 30, 40
|
||||
:width: 80%
|
||||
:align: center
|
||||
|
||||
+----------------+-----------+---------------------------+
|
||||
| 名称 | 芯片型号 | GPIO |
|
||||
+================+===========+===========================+
|
||||
| DAC Channel A | BL702 | GPIO 11 |
|
||||
+ +-----------+---------------------------+
|
||||
| | BL616 | GPIO 3 |
|
||||
+----------------+-----------+---------------------------+
|
||||
本 demo 使用到的 gpio 参考 ``board_adc_gpio_init`` 。
|
||||
|
||||
软件实现
|
||||
-----------------------------
|
||||
|
@ -69,14 +56,8 @@ DAC - poll
|
|||
编译和烧录
|
||||
-----------------------------
|
||||
|
||||
- **命令行编译**
|
||||
|
||||
参考 :ref:`linux_cmd` 或者 :ref:`windows_cmd`
|
||||
|
||||
- **烧录**
|
||||
|
||||
参考 :ref:`bl_dev_cube`
|
||||
|
||||
实验现象
|
||||
-----------------------------
|
||||
|
||||
|
|
|
@ -5,4 +5,28 @@ DAC
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
DAC - poll <dac_polling>
|
||||
DAC - poll <dac_polling>
|
||||
DAC - dma <dac_dma>
|
||||
|
||||
DAC 各通道对应的 GPIO 如下表:
|
||||
|
||||
.. table:: GPIO 口
|
||||
:widths: 25, 25, 25, 25
|
||||
:width: 80%
|
||||
:align: center
|
||||
|
||||
+----------+-----------+-----------+---------------------------+
|
||||
| 名称 | 芯片系列 | 精度 | GPIO |
|
||||
+==========+===========+===========+===========================+
|
||||
| ChannelA | BL702 | 10-bit | GPIO 11 |
|
||||
+ +-----------+-----------+---------------------------+
|
||||
| | BL808 | 10-bit | GPIO 11 |
|
||||
+ +-----------+-----------+---------------------------+
|
||||
| | BL616 | 12-bit | GPIO 3 |
|
||||
+----------+-----------+-----------+---------------------------+
|
||||
| ChannelB | BL702 | 10-bit | GPIO 17 |
|
||||
+ +-----------+-----------+---------------------------+
|
||||
| | BL808 | 10-bit | GPIO 4 |
|
||||
+ +-----------+-----------+---------------------------+
|
||||
| | BL616 | 12-bit | GPIO 2 |
|
||||
+----------+-----------+-----------+---------------------------+
|
Loading…
Add table
Add a link
Reference in a new issue