diff --git "a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/MCX-A153/\346\201\251\346\231\272\346\265\246FRDM-MCXA153\345\256\236\350\267\265\346\214\207\345\215\227.md" "b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/MCX-A153/\346\201\251\346\231\272\346\265\246FRDM-MCXA153\345\256\236\350\267\265\346\214\207\345\215\227.md" index 5f637949784eafd2f1f6b2bbf49c71f3a5899a03..0b1af154e497b6e32f60da880df6eb5cfdb26536 100644 --- "a/rt-thread-version/rt-thread-standard/tutorial/make-bsp/MCX-A153/\346\201\251\346\231\272\346\265\246FRDM-MCXA153\345\256\236\350\267\265\346\214\207\345\215\227.md" +++ "b/rt-thread-version/rt-thread-standard/tutorial/make-bsp/MCX-A153/\346\201\251\346\231\272\346\265\246FRDM-MCXA153\345\256\236\350\267\265\346\214\207\345\215\227.md" @@ -43,16 +43,14 @@ FRDM-MCXA153是一款紧凑且可扩展的开发板,可让您快速基于MCX A * Pmod™ *DNP * mikroBUS™ * RGB用户LED、复位、ISP、唤醒按钮 - 开发板更多详细信息请参考 [**NXP官方网站**](https://www.nxp.com.cn/design/design-center/development-boards-and-designs/general-purpose-mcus/frdm-development-board-for-mcx-a14x-a15x-mcus:FRDM-MCXA153?cid=ps_pro240034g_tac1558850_baidu_pc_2024042614&cl_sr=Web&cl_ctnm=MCX-PC-240206_FRDM-MCXA153_%E7%89%A9%E8%81%94%E7%BD%91%E5%BC%80%E5%8F%91%E6%9D%BF&cl_source1=Baidu&bd_vid=7619009488344959422) - **我有疑问:**[**RT-Thread 官方论坛**](https://club.rt-thread.org ) -# **一、恩智浦FRDM-MCXA153 上的UART实践** (何剑波) - ## 1.实验目的 - rt-thread中UART2驱动添加 - ## 2. 步骤说明 - ### 2.1 UART层级结构 +# **一、恩智浦FRDM-MCXA153 上的UART实践**(何剑波) +## 1.实验目的 +rt-thread中UART2驱动添加 +## 2. 步骤说明 +### 2.1 UART层级结构 ![alt text](Book_Picture/1.0.png) ### 2.2 IO设备管理层 向应用层提供接口(rt_device_read write等) @@ -96,6 +94,7 @@ struct serial_configure rt_uint32_t reserved :5;//保留的位 }; ``` +rt_uart_ops ```c struct rt_uart_ops { @@ -105,7 +104,6 @@ struct rt_uart_ops int (*getc)(struct rt_serial_device *serial); rt_ssize_t (*dma_transmit)(struct rt_serial_device *serial, rt_uint8_t *buf, rt_size_t size, int direction); }; - ``` ### 3.3 实现rt_uart_ops成员的接口 1. configure :配置串口 @@ -122,13 +120,11 @@ struct rt_uart_ops #define RT_DEVICE_CTRL_GET_INT 0x08 /**< get interrupt status */ #define RT_DEVICE_CTRL_CONSOLE_OFLAG 0x09 /**< get console open flag */ #define RT_DEVICE_CTRL_MASK 0x1f /**< mask for contrl commands */ - ``` ### 3.5 putc: 发送一个字符 ```c LPUART_WriteByte(uart->uart_base, ch); ``` - ### 3.6 getc: 接收一个字符 ```c if (kLPUART_RxDataRegFullInterruptEnable & LPUART_GetStatusFlags(uart->uart_base)) @@ -153,11 +149,9 @@ rt_device_write(uart2_serial, 0, str, (sizeof(str) - 1)); ## 5.原文连接 原文连接:https://club.rt-thread.org/ask/article/29db335ea2a3c6a0.html - -# **二、恩智浦FRDM-MCXA153上的GPIO实践** (何剑波) - +# **二、恩智浦FRDM-MCXA153上的GPIO实践**(何剑波) ## 1.实验目的 - rt-thread中GPIO的使用 +rt-thread中GPIO的使用 ## 2. 步骤说明 ### 2.1 Pin驱动框架 ![alt text](Book_Picture/2.0.png) @@ -243,16 +237,13 @@ while (1) rt_thread_mdelay(500); /* Delay 500mS */ #endif } - ``` - ## 4.原文连接 原文连接:https://club.rt-thread.org/ask/article/57ebc0a8e6e04df8.html - -# **三、恩智浦FRDM-MCXA153上的ADC实践** (何剑波) +# **三、恩智浦FRDM-MCXA153上的ADC实践**(何剑波) ## 1.实验目的 - rt-thread中ADC的使用 +rt-thread中ADC的使用 ## 2. 步骤说明 ### 2.1 ADC驱动框架 ![alt text](Book_Picture/3.0.png) @@ -270,7 +261,7 @@ struct rt_adc_ops }; ``` * 3. 提供注册接口 -```C +```c rt_err_t rt_hw_adc_register(rt_adc_device_t adc,const char *name, const struct rt_adc_ops *ops, const void *user_data); ``` ## 3. 代码实现 @@ -285,7 +276,8 @@ rt_err_t rt_hw_adc_register(rt_adc_device_t adc,const char *name, const struct r - triggerID - ADC_Type * adc_base - 还有最重要的 rt_adc_device_t (adc.c中) - ```c + +```c #include "drv_lpadc.h" #include "fsl_common.h" #include "fsl_gpio.h" @@ -402,8 +394,9 @@ int rt_hw_adc_init(void) return 0; } //INIT_BOARD_EXPORT(rt_hw_adc_init); - ``` -``` c +``` +rt_adc_device_t (adc.c中) +```c //注册 rt_hw_adc_init(); rt_adc_device_t adc_dev; @@ -411,7 +404,7 @@ rt_uint32_t value; //查找 adc_dev = (rt_adc_device_t) rt_device_find("adc1"); if(adc_dev == RT_NULL) - rt_kprintf("adc device find error\r\n"); +rt_kprintf("adc device find error\r\n"); //使能 rt_adc_enable(adc_dev, 0); //读取 @@ -426,8 +419,7 @@ rt_kprintf("adc value = %d\r\n",value); ## 5.原文连接 原文连接:https://club.rt-thread.org/ask/article/c51ca36f3733c61b.html - -# **四、恩智浦FRDM-MCXA153上的Flash实践** (何剑波) +# **四、恩智浦FRDM-MCXA153上的Flash实践**(何剑波) ## 1.使用内部flash适配MTD NOR 设备驱动 RT-thread 将常用的存储设备抽象成MTD(Memory Technology Device)设备驱动,此开发板的A153有128KB的片上flash,尝试将其中的512字节取出然后作为存储数据 通过RT-thread 的MTD nor 设备进行管理。 ## 2.MTD MOR 层级结构 @@ -883,7 +875,7 @@ if GetDepend('BSP_USING_SPI'): ## 4. 测试用例 ### 4.1打开menuconfig使能spi0驱动 ![alt text](Book_Picture/5.0.png) -### 4.2 短接MISO和MOSI引脚(P1_0和P1_2)进行自发自收测试 +### 4.2 短接MISO和MOSI引脚(P1_0和P1_2)进行自发自收测试 ![alt text](Book_Picture/5.1.jpg) ### 4.3测试程序 ```c @@ -932,12 +924,12 @@ int main(void) ``` ### 4.4 运行结果 ![alt text](Book_Picture/5.2.png) -* 另外,你也可以安装MCUXpresso Config Tools v16,通过图形方式配置时钟树、GPIO复用 +* 另外,你也可以安装MCUXpresso Config Tools v16,通过图形方式配置时钟树、GPIO复用 ## 5.原文链接 -原文链接:https: club.rt-thread.org ask article f60d86d2693b3229.html +原文链接:https://club.rt-thread.org/ask/article/66a8140d56dacab9.html -# **六、恩智浦FRDM-MCXA153上的PWM实践** (莫海文) +# **六、恩智浦FRDM-MCXA153上的PWM实践**(莫海文) ## 1. 移植流程 1. 在board里边添加相应的外设:配置时钟分频、引脚功能等 2. 添加相应的config开关、Kconfig开关,用以指示相应的外设开启与关闭(本质是通过宏定义或者条件编译的方式) @@ -1111,7 +1103,6 @@ menuconfig BSP_USING_PWM default y endif ``` - ## 3. 测试用例 生成频率1KHz,占空比为5%的方波 ```c @@ -1149,7 +1140,7 @@ int main(void) ## 5.原文链接 原文链接:https://club.rt-thread.org/ask/article/689635e865d94049.html -# **七、恩智浦FRDM-MCXA153上的 IIC(软件) 实践** (大菠萝) +# **七、恩智浦FRDM-MCXA153上的 IIC(软件) 实践**(大菠萝) ## 1. 硬件介绍 ### 1.1 SSD1306 OLED SSD1306是一款单片CMOS OLED PLED驱动器,具有有机 聚合物发光控制器二极管点阵图形显示系。SSD1306内置对比度控制、显示RAM和振荡器,减少了外部组件和功耗。它有256级亮度控制。数据 命令是从通用单片机通过硬件可选的6800 8000系列兼容并行接口发送,I2C接口或串行外围接口。它适用于许多紧凑型便携式应用程序,例如手机副显示屏、MP3播放器、计算器等。 @@ -1208,7 +1199,7 @@ msh > 对比硬件IIC,软件IIC的刷屏速度的确差了很多。 ## 4.原文链接 原文链接: https://club.rt-thread.org/ask/article/c0b78938726a4d7c.html -# **八、恩智浦FRDM-MCXA153上的 IIC(硬件) 实践** (大菠萝) +# **八、恩智浦FRDM-MCXA153上的 IIC(硬件) 实践**(大菠萝) ## 1. 工程创建 目前RT-Thread Studio尚未支持恩智浦FRDM-MCXA153开发板BSP,需要从gitee下载最新的主线,通过scons命令创建工程。下载好主线源码后,在rt-thread\bsp\nxp\mcx\mcxa\frdm-mcxa153 目录下打开scons环境,配置IIC驱动和SSD1306 OLED。 ### 1.1 IIC配置 @@ -1314,11 +1305,11 @@ msh > ![alt text](Book_Picture/8.5.jpg) ## 3.原文链接 原文链接: https://club.rt-thread.org/ask/article/29229e50ce678094.html -# **九、恩智浦FRDM-MCXA153不能调试的解决办法** (莫海文) + +# **九、恩智浦FRDM-MCXA153不能调试的解决办法**(莫海文) ## 1. 前言 新手接触到NXP的板子时,一个不留神把调试的GPIO(RXD、TXD)改掉,很容易出现MDK Keil无法识别CMSIS-DAP调试器的情况;主控进入了莫名其妙模式导致调试器无法识别了 ![alt text](Book_Picture/10.0.png) - ## 2. 解决办法 下载并安装LinkServer,这里用的是1.6.133版本 ![alt text](Book_Picture/10.1.png) @@ -1327,7 +1318,6 @@ msh > 可以尝试在LinkServer控制台里边进行调试器固件更新(需要短接JP8引脚,然后再按RESET) ![alt text](Book_Picture/10.3.png) 然后命令行强刷axf固件,rtthread.axf必须是一个正常的固件,即RXD、TXD引脚没有被配错 - ```c LinkServer.exe flash --probe #1 mcxa153 load rtthread.axf --erase-all ``` @@ -1335,7 +1325,6 @@ LinkServer.exe flash --probe #1 mcxa153 load rtthread.axf --erase-all ![alt text](Book_Picture/10.4.png) 拔插USB连接线后发现在Keil里边又能识别CMISS-DAP调试器了,又可以继续浪没人管了 ![alt text](Book_Picture/10.5.png) - ## 3. 烧写命令 检测烧写器是否存在:LinkServer.exe probes 检测烧写器是否需要升级:LinkServer.exe probes #1 update auto