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 介绍。
338 0
3_4_AliOS Things 基础 AOS API 及 HAL API 介绍|学习笔记
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列3 — I2C driver porting
HAL层(Hardware abstraction layer) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
3255 0
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列2 — SPI driver porting
HAL层(Hardware abstraction layer) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
2868 0
|
JavaScript 物联网 芯片
AliOS Things 硬件抽象层(HAL)对接系列1 — GPIO driver porting
HAL层(Hardware abstraction layer 硬件抽象层) 的目的是为了屏蔽底层不同芯片平台的差异,从而使驱动层上面的软件不会随芯片平台而改变。AliOS Things定义了全面的HAL抽象层,这个系列主要介绍AliOS ThingsHAL层与不同芯片平台对接的poring要点,并举例说明。
3494 0
|
物联网 Linux
【AliOS Things学习笔记】为你的AliOS Things应用增加自定义cli命令
怎么才能在RTOS系统中,通过 串口shell控制LED的开关。
3584 0
|
AliOS-Things 物联网 编译器
使用HaaS Studio开发AliOS Things C/C++应用
本文章将介绍使用HaaS Studio 进行AliOS-Things C/C++应用开发。
使用HaaS Studio开发AliOS Things C/C++应用
|
传感器 存储 移动开发
使用AliOS Things快速构建温度计应用 |《AliOS Things快速开发指南》
本文是基于AliOS Things 3.1快速构建温度计的应用场景。涉及AliOS Things组件开发,构建AliOS Things用户项目,AliOS Things HAL API使用,向AliOS Things中添加并使用组件。用到的硬件设备有半导体开发板、温度传感器、数码管显示器。
使用AliOS Things快速构建温度计应用 |《AliOS Things快速开发指南》
|
域名解析 移动开发 数据可视化
使用 AliOS Things 3.0 快速构建用户应用 BlinkAPP
AliOS Things 3.0版本于去年9月份在云栖大会正式发布,在新版本中带来了全新的应用开发框架,帮助用户快速构建自己的应用。使用户可以更专注于自身应用的开发。本文将已BlinkAPP为例,为大家演示如何快速使用应用开发框创建项目并完成应用代码编写。
911 0
使用 AliOS Things 3.0 快速构建用户应用 BlinkAPP
|
物联网 AliOS-Things 机器人
AliOS Things 3.0 应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
距离 AliOS Things 3.0 上线已经有一段时间了,新版的 AliOS Things 3.0 体验感到底如何呢?本文将为大家详细讲解其应用实例,我们分别从运行流程、效果展示、操作流程以及源码讲解四个方面进行了阐述。
1700 0