i.MX RT1050 USB CDC 例程使用外部 SDRAM
本文使用的硬件平台:IMXRT1050-EVKB ,软件版本:SDK2.11.1 首先我们导出 USB CDC 例程:
编译,下载,
接上 USB 口(板上编号 J9),打开串口助手可以看到弹出对应 COM 端口:
发送数据也能正常回数据:
在工程设置中,我们可以看到例程默认使用的是 DTCM 存储变量:
现在来将其改为外部 SDRAM 来存储,一般修改我们就直接将全部变量存储的地方选择 BOARD_SDRAM ,
添加两个宏定义,用于初始化 SDRAM
编译
下载后你会发现并未像之前一样弹出 USB 端口,原因在于例程中已经使能了 Cache :
为什么使能 Cache 之后就会出错呢?我们先看看 i.MX RT1050 的内存结构:
可以看到,对于 DTCM ,CPU 是可以直接访问的,而当我们使用外部的 SDRAM 又或者是内部 OCRAM 来作存储变量需要经过Cache , 由于数据一致性问题会导致很多的中间件出错,就比如现在使用的 USB ,解决这个问题比较简单的办法就是使用 Non-Cache 区域。 在工程设置中,照以下修改即可:
重新编译下载可以看到 USB 端口重新出现了,也能正常收发数据:
参考资料: 《IMXRT1050RM》 https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1050-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1050
《AN12042》
|