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》

https://www.nxp.com.cn/docs/en/application-note/AN12042.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论