TXW81x 外设示例代码说明
责任与版权
责任限制
由于产品版本升级或者其他原因,本文档会不定期更新。除非另行约定,泰芯半导体有限公司对本文档所有内容不提供任何担保或授权。
客户应在遵守法律、法规和安全要求的前提下进行产品设计,并做充分验证。泰芯半导体有限公司对应用帮助或客户产品设计不承担任何义务。客户应对其使用泰芯半导体有限公司的产品和应用自行负责。
在适用法律允许的范围内,泰芯半导体有限公司在任何情况下,都不对因使用本文档相关内容及本文档描述的产品而产生的损失和损害进行超过购买支付价款的赔偿(除在涉及人身伤害的情况中根据适用的法律规定的损害赔偿外)。
版权申明
泰芯半导体有限公司保留随时修改本文档中任何信息的权利,无需提前通知且不承担任何责任。
未经泰芯半导体有限公司书面同意,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。除非获得相关权利人的许可,否则,任何人不能以任何形式对前述软件进行复制、分发、修改、摘录、反编译、反汇编、解密、反向工程、出租、转让、分许可等侵犯本文档描述的享有版权的软件版权的行为,但是适用法禁止此类限制的除外。
修订记录
日期 | 版本 | 描 述 | 修订人 |
2023-11-06 | V1.0 | 初始版本 | TX |
1. 概述
本文档介绍如何使用芯片外设实现某些功能。SDK外设示例的主体框架介绍如下:
- 外设示例代码的运行逻辑
若要运行外设示例代码,需要在工程设置中,定义EXAMPLES宏,如下:
点击魔术棒,进行相应的Project Settings。
在定义EXAMPLES宏后,可依据运行的外设示例在project_config.h中,再定义该示例的宏。注意:每次只能运行单个外设示例,不能同时运行多个外设示例。
以UART外设为例,如下:
SDK中的外设示例代码框架如下(由宏进行控制):
- 外设示例代码内容框架(以UART示例):
示例代码位于SDK目录:
...\project\examples\peripherals\uart
包含以下文件:
example_uart.c
example_uart.h
example_uart.c文件中的example_uart函数,包含了UART的所有使用示例。
example_uart函数中的每个使用示例,通过example_uart.c文件首部的宏进行控制。
(注意:只能运行一个使用示例,不能运行多个使用示例)
- 硬件连接公共部分说明
后续章节的外设示例中“硬件连接”的部分均要使用,如下:
- 硬件资源
- TXW816_WAV_EVB开发板
- 5V电源
- 平头哥CKLINK Lite,及其配套的USB线缆、转接板、下载线
- 硬件连接
- 5V电源连接到开发板的电源口。
- 平头哥CKLINK Lite连接到开发板的DEBUG口。
2. 外设使用示例
本章节主要介绍如何使用API函数配置芯片外设,达到所需功能。
2.1. UART
UART的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电、串口硬件连线等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置、I/O配置等。
- 示例讲解
描述example_uart.c文件中的具体功能示例代码,主要包括:
- 使用CPU收发数据
- 使用DMA收发数据
- 使用UART的超时中断
- 使用IOCTL_CMD配置UART的波特率
示例代码位于SDK目录:
...\project\examples\peripherals\uart
包含以下文件:
example_uart.c
example_uart.h
硬件连接
- 硬件资源
- 平头哥CKLINK Lite,及其配套的USB线缆、转接板、下载线
- USB转TLL串口模块
- 硬件连接
- USB转TTL串口模块的TX引脚连接至开发板的PA6,RX引脚连接至开发板的PA5。
同时,USB转TTL串口模块连接到电脑。
- 接上开发板电源。
软件配置
- 打开工程
打开位于“...\project\txw81x”下的txw81x.cdkproj,打开工程。如下图:
成功打开工程后,如下图:
- 配置UART0 I/O
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* 配置UART0 TX为PA_5,RX为PA_6 */ #define PIN_UART0_TX PA_5 #define PIN_UART0_RX PA_6 |
完成如下图:
注:
“PIN_UART0_TX”与“PA_5”等有关引脚的宏定义样式,参加SDK文件如下:
...\sdk\include\chip\txw81x\pin_names.h
该文件定义了各外设的引脚宏定义样式。
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\uart\example_uart.c
...\project\examples\peripherals\uart\example_uart.h
- 使用CPU收发数据
- 本例实现的主要功能
电脑上的串口助手发送内容后,UART原封不动地将内容发回给串口助手
- 关键代码讲解
本例位于example_uart_transmit_by_cpu函数内,主要实现思路如下:
UART0配置115200波特率,申请UART接收1帧数据完成中断。函数内使用信号量机制,一直等待接收1帧数据完成,
uart_open(p_uart, 115200);用于开启uart设备并配置波特率
uart_request_irq(p_uart,(uart_irq_hdl)example_uart_irq_hdl,UART_IRQ_FLAG_RX_BYTE, (uint32)p_uart);用于申请中断,其中example_uart_irq_hdl是用户自定义的中断函数,UART_IRQ_FLAG_RX_BYTE意思是接收1个byte就会触发中断。第四个参数是向中断函数传递的参数。
代码如下:
1帧数据接收完成后,进入example_uart_irq_hdl中断服务函数,保存接收到的数据,同时发送信号量,如下:
- 下载验证
- 使用DMA收发数据
- 本例实现的主要功能
电脑上的串口助手发送内容后,UART原封不动地将内容发回给串口助手
- 关键代码讲解
本例位于example_uart_transmit_by_dma函数内,主要实现思路如下:
UART0配置115200波特率,配置使用DMA,申请UART DMA接收完成中断。函数内使用信号量机制,一直等待DMA接收数据完成,如下:
DMA接收数据完成后,进入example_uart_irq_hdl中断服务函数,配置下一次DMA接收的地址和长度,同时发送信号量,如下:
- 下载验证
- 使用UART的超时中断
- 本例实现的主要功能
配置UART0 0.1s的超时中断。电脑上的串口助手连续发送,若发送间隔时间超过0.1s,则UART0向串口助手发送“T OUT”字样;若发送间隔时间小于0.1s,则UART0不发送任何数据。
- 关键代码讲解
本例位于example_uart_use_irq函数内,主要实现思路如下:
UART0配置115200波特率,配置timeout时间0.1s,申请UART timeout中断。
若UART发生timeout行为,则进入中断,发送“T OUT”字样。
- 下载验证
- 使用IOCTL_CMD配置UART的波特率
- 本例实现的主要功能
使用uart_ioctl改变UART0的波特率从115200到921600,并以此波特率发送“TAIXIN-SEMI SDK, UART example test”字样到电脑端的串口助手。
- 关键代码讲解
本例位于example_uart_use_ioctl_cmd函数内,主要实现思路如下:
uart_ioctl(p_uart, UART_IOCTL_CMD_SET_BAUDRATE, 921600, 0);用于将波特率设置为921600。
如下图:
- 下载验证
2.2. PWM
PWM的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电、串口硬件连线等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置、I/O配置等。
- 示例讲解
描述example_pwm.c文件中的具体功能示例代码,主要包括:
- 产生50%占空比的PWM波形
- 使用PWM的计数到比较值中断
- 使用IOCTL_CMD改变PWM的占空比
示例代码位于SDK目录:
...\project\examples\peripherals\pwm
包含以下文件:
example_pwm.c
example_pwm.h
硬件连接
- 硬件资源
- USB转TLL串口模块
- 逻辑分析仪
- 硬件连接
- 逻辑分析仪的采样通道连接到PA8,逻辑分析仪连接至电脑
- USB转TTL串口模块的TX引脚连接至开发板的PA12,RX引脚连接至开发板的PA13。
同时,USB转TTL串口模块连接到电脑。
- 接上开发板电源。
软件配置
- 打开工程
参考2.1.2 软件配置
- 配置PWM I/O
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* 配置PA_5为PWM CHANNEL 1*/ #define PIN_PWM_CHANNEL_1 PA_1 |
具体细节可参考例2.1.2UART的软件配置
注:
“PIN_PWM_CHANNEL_1”与“PA_8”等有关引脚的宏定义样式,参加SDK文件如下:
...\sdk\include\chip\txw81x\pin_names.h
该文件定义了各外设的引脚宏定义样式。
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\pwm\example_pwm.c
...\project\examples\peripherals\pwm\example_pwm.h
- 产生50%占空比的PWM波形
- 本例实现的主要功能
产生50%占空比的PWM波形,逻辑分析仪捕获波形
- 关键代码讲解
本例位于example_pwm_50percent_duty_waveform函数内,主要实现思路如下:
PWM周期值配置10000,比较值配置5000(10000/2),默认使用系统时钟作为计数源。
pwm_init(p_pwm, PWM_CHANNEL_1, 10000, 10000/2);用于设置PWM的周期值和比较值。
pwm_start(p_pwm, PWM_CHANNEL_1);用于启动PWM波发生器
代码如下:
- 下载验证
- 使用PWM的计数到比较值中断
- 本例实现的主要功能
开启PWM的计数到比较值中断,每次中断到来,UART打印“INT”字样。
- 关键代码讲解
本例位于example_pwm_use_irq函数内,主要实现思路如下:
PWM周期值配置10000,比较值配置5000(10000/2),默认使用系统时钟作为计数源,申请PWM的计数到比较值中断。
pwm_request_irq(p_pwm, PWM_CHANNEL_1, PWM_IRQ_FLAG_COMPARE, (pwm_irq_hdl)example_pwm_irq_hdl, 0);用于请求比较值中断,当计数值等于比较值时,则会触发中断,进入example_pwm_irq_hdl函数。
如下:
- 下载验证
- 使用IOCTL_CMD改变PWM的占空比
- 本例实现的主要功能
使用pwm_ioctl函数改变PWM的占空比。
- 关键代码讲解
本例位于example_pwm_use_ioctl_cmd函数内,主要实现思路如下:
PWM初始周期值配置10000,初始比较值配置5000(10000/2),默认使用系统时钟作为计数源,每20ms使用pwm_ioctl函数改变PWM占空比。
pwm_ioctl(p_pwm, PWM_CHANNEL_1, PWM_IOCTL_CMD_SET_PERIOD_DUTY, 10000, 10000/2);用于重新配置PWM的周期值和比较值
如下:
2.3. TIMER
TIMER的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电、串口硬件连线等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置、I/O配置等。
- 示例讲解
描述example_timer.c文件中的具体功能示例代码,主要包括:
- TIMER一次计数
- TIMER周期计数
- 使用IOCTL_CMD改变计数源的分频
示例代码位于SDK目录:
...\project\examples\peripherals\timer
包含以下文件:
example_timer.c
example_timer.h
硬件连接
- 硬件资源
- USB转TLL串口模块
- 硬件连接
- USB转TTL串口模块的TX引脚连接至开发板的PA12,RX引脚连接至开发板的PA13。
同时,USB转TTL串口模块连接到电脑。
- 接上开发板电源。
软件配置
- 打开工程
参考2.1.2 软件配置
- 配置I/O
无
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\timer\example_timer.c
...\project\examples\peripherals\timer\example_timer.h
- TIMER一次计数
- 本例实现的主要功能
TIMER计数一次,计数完成后,打印“once”字样。
- 关键代码讲解
本例位于example_timer_counts_once函数内,主要实现思路如下:
TIMER周期值配置100000,配置计数类型是单次,默认使用系统时钟作为计数源。
timer_device_open(p_timer, TIMER_TYPE_ONCE, 0);配置定时器类型并打开设备。
timer_device_start(p_timer, 100000, (timer_cb_hdl)example_timer_irq_hdl, 0);用于设置定时器周期值为100000,当周期完成时,就会进入example_timer_irq_hdl函数。其中第四个参数是中断函数的参数。
代码如下:
- 下载验证
- TIMER周期计数
- 本例实现的主要功能
TIMER周期计数,每次计数完成后,打印“period”字样。
- 关键代码讲解
本例位于example_timer_counts_periodic函数内,主要实现思路如下:
TIMER计数值配置100000,配置周期计数,默认使用系统时钟作为计数源,如下:
- 下载验证
- 使用IOCTL_CMD改变计数源的分频
- 本例实现的主要功能
使用timer_device_ioctl函数改变TIMER计数源的分频比。每次计数完成后,打印“ioctl cmd”字样。
- 关键代码讲解
本例位于example_timer_use_ioctl_cmd函数内,主要实现思路如下:
使用timer_device_ioctl函数改变TIMER计数源的分频比,从默认1分频,改为32(2^5)分频。
timer_device_ioctl(p_timer, TIMER_SET_CLK_PSC, n, 0);用于更改定时器分频数,总共有8个挡位,第三个参数n决定分频数为2^n。
如下:
- 下载验证
2.4. I2C
I2C的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电、串口硬件连线等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置、I/O配置等。
- 示例讲解
描述example_i2c.c文件中的具体功能示例代码,主要包括:
- I2C发送数据
- 使用I2C发送所有数据完成中断
- 使用IOCTL_CMD改变目标I2C从机的设备地址
示例代码位于SDK目录:
...\project\examples\peripherals\i2c
包含以下文件:
example_i2c.c
example_i2c.h
硬件连接
- 硬件资源
- USB转TLL串口模块
- 逻辑分析仪
- 硬件连接
- 逻辑分析仪的采样通道连接到PA5 PA6,逻辑分析仪连接至电脑
- USB转TTL串口模块的TX引脚连接至开发板的PA12,RX引脚连接至开发板的PA13。
- 同时,USB转TTL串口模块连接到电脑。
- 接上开发板电源。
软件配置
- 打开工程
参考2.1.2 软件配置
- 配置I2C I/O
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* IIC1 */ #define PIN_IIC1_SCL PC_12 #define PIN_IIC1_SDA PC_13 |
具体细节可参考例2.1.2UART的软件配置
注:
“PIN_IIC1_SCL”与“PA_5”等有关引脚的宏定义样式,参加SDK文件如下:
...\sdk\include\chip\txw81x\pin_names.h
该文件定义了各外设的引脚宏定义样式。
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\i2c\example_i2c.c
...\project\examples\peripherals\i2c\example_i2c.h
- I2C发送数据
- 本例实现的主要功能
I2C发送数据
- 关键代码讲解
本例位于example_i2c_transmit函数内,主要实现思路如下:
I2C配置300kHz波特率,目标I2C设备地址为0x20,发送4byte数据,
i2c_open(p_i2c, IIC_MODE_MASTER, IIC_ADDR_7BIT, 0x20);用于配置iic主机模式,7位地址模式,以及0x20的设备地址
i2c_set_baudrate(p_i2c, 300000);用于配置IIC的波特率位300000
如下:
- 下载验证
- 使用I2C发送所有数据完成中断
- 本例实现的主要功能
I2C发送完4byte数据后,进中断打印“I2C Tx Done”字样。
- 关键代码讲解
本例位于example_i2c_use_irq函数内,主要实现思路如下:
I2C配置300kHz波特率,目标I2C设备地址为0x20,申请发送所有数据完成中断,发送4byte数据,如下:
- 下载验证
- 使用IOCTL_CMD改变目标I2C从机的设备地址
- 本例实现的主要功能
使用i2c_ioctl函数改变I2C从机的设备地址。
- 关键代码讲解
本例位于example_i2c_use_ioctl_cmd函数内,主要实现思路如下:
I2C配置300kHz波特率,修改目标I2C设备地址为0x30,发送4byte数据,
其中i2c_ioctl(p_i2c, IIC_SET_DEVICE_ADDR, 0x30);用于将设备地址从0x20修 改为0x30。
代码如下:
- 下载验证
2.5. GPIO
描述在本示例中,硬件环境如何搭建,主要包括供电等。
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置等。
描述example_gpio.c文件中的具体功能示例代码,主要包括:
- GPIO的输入输出
- GPIO的中断
示例代码位于SDK目录:
...\project\examples\peripherals\gpio
包含以下文件:
example_gpio.c
example_gpio.h
硬件连接
- TXW816_WAV_EVB开发板
- 5V电源
- 平头哥CKLINK Lite,及其配套的USB线缆、转接板、下载线
- 5V电源连接到开发板的电源口。
- 平头哥CKLINK Lite连接到开发板的DEBUG口。
- 接上开发板电源。
软件配置
无
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\gpio\example_gpio.c
...\project\examples\peripherals\gpio\example_gpio.h
- 本例实现的主要功能
通过按键输入控制LED灯的亮灭。
本例位于example_gpio_input_output函数内,主要实现思路如下:
设置PA15为输出模式,PC5为输入模式;通过判断按键是否按下来翻转LED灯的亮灭。
如下图所示:
- 下载验证
依据按键是否按下来控制LED灯的亮灭。
- GPIO的中断
通过按键输入中断,在中断处理函数中控制LED灯的亮灭。
本例位于example_gpio_use_irq函数内,主要实现思路如下:
设置PA15为输出模式,PC5为输入模式;通过按键输入,使其进入中断处理函数控制LED灯的亮灭。如下图所示:
- 下载验证
依据按键是否按下来控制LED灯的亮灭。
2.6. ADC
ADC的示例部分,主要包括如下内容:
描述在本示例中,硬件环境如何搭建,主要包括供电、串口硬件连线等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置、I/O配置等。
- 示例讲解
描述example_adc.c文件中的具体功能示例代码,主要包括:
- ADC采样
- ADC采样完成中断
示例代码位于SDK目录:
...\project\examples\peripherals\adc
包含以下文件:
example_adc.c
example_adc.h
硬件连接
- 硬件连接
软件配置
- 配置GPIO I/O
无
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\adc\example_adc.c
...\project\examples\peripherals\adc\example_adc.h
- ADC输入采样
本例位于example_adc_sample函数内,主要实现思路如下:
设置PA3为ADC输入采样通道;通过按下不同的按键采集不同的电压,把采集到的电压通过串口打印出来。如下图所示:
- 下载验证
例程现象如下图所示,当没有按键按下时ADC采集到的电压为2.78V,S1按下后为0.00V,S2按下后为0.59V,S3按下后为1.19V,S4按下后为1.79V,S5按下后为2.36V。(注意:按键按下后的电压值由VCC1和分压比决定,以下数据仅供参考)
- ADC采样完成中断
在中断处理函数中通过串口不断的打印采集到的电压。
本例位于example_adc_use_irq函数内,主要实现思路如下:
设置PC5为ADC输入采样通道;通过按下不同的按键采集不同的电压,采集完成后在中断处理函数中通过串口把采集到的电压打印出来。如下图所示:
- 下载验证
例程现象如下图所示,当没有按键按下时ADC采集到的电压为2.78V,S1按下后为0.00V,S2按下后为0.59V,S3按下后为1.19V,S4按下后为1.79V,S5按下后为2.36V。(注意:按键按下后的电压值由VCC1和分压比决定,以下数据仅供参考)
2.7. SPI
SPI的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置、I/O配置等。
- 示例讲解
描述example_spi.c文件中的具体功能示例代码,主要包括:
示例代码位于SDK目录:
...\project\examples\peripherals\spi
包含以下文件:
example_spi.c
example_spi.h
硬件连接
- USB转TLL串口模块
- USB转TTL串口模块的TX引脚连接至开发板的PA12,RX引脚连接至开发板的PA13。同时,USB转TTL串口模块连接到电脑。(如需用其他IO口作为串口使用请参考UART代码示例)
- 接上开发板电源。
软件配置
参考2.1.2 软件配置。
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* 配置SPI I/O */ #define PIN_SPI0_CS PB_8 #define PIN_SPI0_IO0 PB_9 #define PIN_SPI0_IO1 PB_10 |
具体细节可参考例2.1.2UART的软件配置
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\adc\example_spi.c
...\project\examples\peripherals\adc\example_spi.h
- SPI通过DMA与W25Q32FV进行数据读写
使用SPI的DMA模式对W25Q32FV进行数据读写,通过串口打印相关信息
本例位于example_spi_transmit函数内,主要实现思路如下:
设置SPI的波特率为4MHz,主机模式,线模式为标准模式;上升沿采样,下降沿出数据。根据W25Q32FV的相关命令进行操作。如下图所示:
- 下载验证
SPI通过DMA读写示例成功如下图所示。
- 关键代码讲解
本例位于example_spi_use_irq函数内,主要实现思路如下:
设置SPI的波特率为4MHz,主机模式,线模式为标准模式;上升沿采样,下降沿出数据。根据W25Q32FV的相关命令进行操作。如下图所示:
- 下载验证
SPI发送和接收完成中断示例成功如下图所示。
2.8. CAPTURE
CAPTURE的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电,捕获通道接线等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置等。
- 示例讲解
描述example_capture.c文件中的具体功能示例代码,主要包括:
示例代码位于SDK目录:
...\project\examples\peripherals\capture
包含以下文件:
example_capture.c
example_capture.h
硬件连接
- 硬件资源
- USB转TLL串口模块
- 硬件连接
- PB1连接PA6
- USB转TTL串口模块的TX引脚连接至开发板的PA12,RX引脚连接至开发板的PA12。同时,USB转TTL串口模块连接到电脑。(如需用其他IO口作为串口使用请参考UART代码示例)
- 接上开发板电源。
软件配置
- 打开工程
参考2.1.2 软件配置
- 配置CAPTURE I/O
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* 配置SPI I/O */ |
具体细节可参考例2.1.2UART的软件配置
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\capture\example_capture.c
...\project\examples\peripherals\capture\example_capture.h
- CAPTURE的双沿捕获
- 本例实现的主要功能
- 关键代码讲解
本例位于example_capture_all函数内,主要实现思路如下:
设置PA6为输出模式,PB6为双沿输入捕获模式;捕获PA6输出的矩形波。代码如下图所示:
- 下载验证
由于打印函数占用了1ms的时间且捕获模式为双沿模式,故本次PA6输出波形的周期为4ms,占空比50%。待捕获波形如下图所示:
捕获源的时钟采用系统时钟(180M),理论捕获值为360000。实际捕获结果如下图所示:
- APTURE的上升沿捕获
- 本例实现的主要功能
通过串口把捕获到的上升沿数据打印出来。
- 关键代码讲解
本例位于example_capture_rise函数内,主要实现思路如下:
设置PA6为输出模式,PB6为上升沿输入捕获模式;捕获PA6输出的矩形波。代码如下图所示:
- 下载验证
由于打印函数占用了1ms的时间且捕获模式为单沿上升沿模式,故本次PA6输出波形的周期为3ms,占空比66.666%。待捕获波形如下图所示:
捕获源的时钟采用系统时钟(180M),理论捕获值为540000。实际捕获结果如下图所示:
2.9. SDHOST
SDHOST的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电,插卡等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置等。
- 示例讲解
描述example_sdhost.c文件中的具体功能示例代码,主要包括:
- 使用CPU写读TF卡数据
示例代码位于SDK目录:
...\project\examples\peripherals\sdhost
包含以下文件:
example_sdhost.c
example_sdhost.h
硬件连接
- 硬件资源
- TF存储卡
- USB转TLL串口模块
- 硬件连接
- 把TF存储卡插在SD卡槽上。
- USB转TTL串口模块的TX引脚连接至开发板的PA12,RX引脚连接至开发板的PA13。同时,USB转TTL串口模块连接到电脑。(如需用其他IO口作为串口使用请参考UART代码示例)。
- 接上开发板电源。
软件配置
- 打开工程
参考2.1.2 软件配置
- 配置SDHOST的IO引脚
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* 配置SDHOST相应引脚 */ #define PIN_SDH_CLK PC_4 #define PIN_SDH_CMD PC_3 #define PIN_SDH_DAT0 PC_2 |
具体细节可参考例2.1.2UART的软件配置
注:
“PIN_SDH_CLK”与“PC_4”等有关引脚的宏定义样式,参加SDK文件如下:
...\sdk\include\chip\txw81x\pin_names.h
该文件定义了各外设的引脚宏定义样式。
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\sdhost\example_sdhost.c
...\project\examples\peripherals\sdhost\example_sdhost.h
- 使用CPU写读TF卡数据
- 本例实现的主要功能
使用CPU实现对TF卡的写数据以及读相应区域的数据,查看相应区域的数据是否正确
- 关键代码讲解
本例位于example_sdhost_write_and_read_dat函数内,主要实现思路如下:
- 打开SDHOST设备,然后使用sdhost_init函数完成sdhost的初始化
- 使用sd_multiple_write函数以及sd_multiple_read函数完成对TF卡的数据写读。
- 最后对数据进行比较判断,查看数据是否正确
注:
具体如下图所示
- 下载验证
连接串口后可以看到打印“SDHOST test pass”即为成功。
PDM_AUDIODAC
PDM_AUDAC的示例部分,主要包括如下内容:
- 硬件连接
描述在本示例中,硬件环境如何搭建,主要包括供电,音频子板连接等。
- 软件配置
描述在本实例中,软件环境如何配置,主要包括集成开发环境的配置等。
- 示例讲解
描述example_pdm_audac.c文件中的具体功能示例代码,主要包括:
- PDM与AUDAC功能测试
示例代码位于SDK目录:
...\project\examples\peripherals\pdm_audac
包含以下文件:
example_pdm_audac.c
example_pdm_audac.h
硬件连接
- 硬件资源
- 喇叭
- 硬件连接
- 把喇叭接在开发板的J8卡座上
- 接上开发板电源。
软件配置
- 打开工程
参考2.1.2 软件配置
- 配置PDM、IIS的IO引脚
打开工程左侧的文件目录中“project\project_config.h”,添加如下代码:
/* 配置PDM相应引脚 */ #define PIN_PDM_MCLK PA_2 #define PIN_PDM_DATA PA_0 |
具体细节可参考例2.1.2UART的软件配置
注:
“PIN_IIS0_BCLK”与“PA_7”等有关引脚的宏定义样式,参加SDK文件如下:
...\sdk\include\chip\txw81x\pin_names.h
代码示例
以下代码示例的讲解,内容参考以下文件:
...\project\examples\peripherals\pdm_audac\example_pdm_audac.c
...\project\examples\peripherals\pdm_audac\example_pdm_audac.h
- PDM与AUDAC功能测试
- 本例实现的主要功能
使用pdm模块采集数字麦克风的声音,然后用芯片内置的音频子系统模块AUDIO_DAC输出数字麦克风采集的声音
- 代码思路
本例位于example_pdm_audac_test函数内,主要实现思路如下:
- 打开PDM、AUDAC设备,然后完成两个模块的初始化
- 配置PDM模块的中断函数,在半满中断中配置新的数据数组,在满中断的时候给出一个信号。
- 接收到信号时,则用AUDAC输出接收完成的数据数组
- 下载验证
下载程序后,对着模块的数字麦克风讲话,聆听喇叭是否听到自己的声音,如果听到就是成功。