AliOS Things 使用HAL库的USB_DEVICE MSC调用SPI W25Q128

简介: AliOS Things的USB_DEVICE MSC的SPI W25Q128实现

1.在此说明一下,这是学习记录,其中肯定有很多问题
2.通过CubeMX选中USB_Device
image
2.1选择Middleware,注意选中MSC后改一下USB的缓冲大小为4096就是最后一个选项
image
3.将生成的文件夹拷贝到board下的对应板子工程
image
4.然后时这两个函数实现,就是加粗部分(说句实话实现SPI调了很久,在其他地方好好的,到了USB中断就不能用,其中就有SPI需要延时获取SPI写状态,因为USB在中断中跳不出去,HAL_Delay()直接不能用。说到这里插一句SPI使用的是直接读写的方式不是中断或者DMA)
int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
/ USER CODE BEGIN 6 /
if (blk_len == 0)
{

return (USBD_FAIL);

}

*if(w25q128_read(blk_addrSTORAGE_BLK_SIZ,buf,blk_len*STORAGE_BLK_SIZ) == 0)

return (USBD_OK);**

return (USBD_FAIL);
/ USER CODE END 6 /
}
int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
/ USER CODE BEGIN 7 /
if (blk_len == 0)
{

return USBD_FAIL;

}

*if(w25q128_erase_write(blk_addrSTORAGE_BLK_SIZ,buf,blk_len*STORAGE_BLK_SIZ) == 0)

return (USBD_OK);**

return USBD_FAIL;
/ USER CODE END 7 /
}
5.这里写函数一定要注意,SPI写入数据时,当遇到不是地址中不是0xFF数据时,写入是无效的,所以USB写入函数这里一定要带有擦除方式写入,至于怎么擦除,就看各位的SPI实现了
6.我添加了个中间文件
image
6.1就封装了usb的初始化和其中断实现
7.总结下调试过程当中的坑:
先把上面写入和擦除函数里的SPI实现注释掉,一跑肯定就跑起来了(反正我是没遇到跑不起来的情况),此时电脑上面就能检测到U盘插入了,但是格式化是不成功的。
然后就是各种SPI读写的对接,真心话,我觉得最大的坑就是说好的有中断嵌套呢,完全就不是那么回事,当然也有可能水平低,没找到正真原因

目录
相关文章
|
消息中间件 移动开发 物联网
3_4_AliOS Things 基础 AOS API 及 HAL API 介绍|学习笔记
快速学习3_4_AliOS Things 基础 AOS API 及 HAL API 介绍。
473 0
3_4_AliOS Things 基础 AOS API 及 HAL API 介绍|学习笔记
|
物联网 API 调度
AliOS Things 新版文档库上线啦
为了更好的服务开发者,提高开发AliOS Things应用的效率,在2021年4月30日AliOS Things 3.3.0版本开源同时,我们推出了近40万字的AliOS Things新版文档库。新版文档库秉承简单、易懂、方便、提效的原则,提供层次清晰的目录结构、丰富详实的说明内容、简单易用的贡献文档接口以及多个访问入口等新特性。
AliOS Things 新版文档库上线啦
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列3 — I2C driver porting
HAL层(Hardware abstraction layer) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
3319 0
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列2 — SPI driver porting
HAL层(Hardware abstraction layer) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
2952 0
|
物联网
AliOS Things外接W25Q128,实现Fatffs
AliOS Things实现Fatffs在W25Q128上
790 0
|
物联网 内存技术
AliOS Things外接W25Q128,使用ulog调用spiffs
AliOS Things在board使用SPI外接W25Q128,将spiffs文件系统挂接到W25Q128下(系统默认是ulong调用spiffs系统)
1097 0
|
物联网 芯片 内存技术
AliOS Things增加自己的开发板STM32F407ZET6,使用CubeMX库
AliOS Things增加自定义开发板,使用CubeMX生成stm32f407zet6对应芯片板
1216 0
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列1 — GPIO driver porting
HAL层(Hardware abstraction layer 硬件抽象层) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
3615 0
|
物联网 Linux
【AliOS Things学习笔记】为你的AliOS Things应用增加自定义cli命令
怎么才能在RTOS系统中,通过 串口shell控制LED的开关。
3673 0
|
AliOS-Things 物联网 编译器
使用HaaS Studio开发AliOS Things C/C++应用
本文章将介绍使用HaaS Studio 进行AliOS-Things C/C++应用开发。
使用HaaS Studio开发AliOS Things C/C++应用