AliOS Things 使用HAL库的USB_DEVICE MSC调用SPI W25Q128-阿里云开发者社区

开发者社区> 魂伤> 正文

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读写的对接,真心话,我觉得最大的坑就是说好的有中断嵌套呢,完全就不是那么回事,当然也有可能水平低,没找到正真原因

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[已解决]:调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "c:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.
原文: [已解决]:调用 LoadLibraryEx 失败,在 ISAPI 筛选器 "c:\Windows\Microsoft.NET\Framework\v4.0.30319\\aspnet_filter.
1512 0
AliOS Things 使用HAL库的USB_DEVICE MSC调用SPI W25Q128
AliOS Things的USB_DEVICE MSC的SPI W25Q128实现
858 0
Java与.NET的WebServices相互调用
一:简介 本文介绍了Java与.NET开发的Web Services相互调用的技术。本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services。
795 0
AliOS Things 维测高阶能力之数据断点(DWT)使用
### 1.    数据断点DWT介绍 在ARM Cortex-M及A系列CPU中,有很多调试组件,使用它们可以执行各种调试功能,包括断点(breakpoint)、数据段点(Data WatchPoint 即 DWT)及各种跟踪(trace)等。 硬件调试模块允许内核在访问数据断点时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将
1118 0
WinForm如何调用Web Service
参考地址 今天看了李天平关于WinForm调用Web Service的代码,我自己模仿做一个代码基本都是复制粘贴的,结果不好使。郁闷的是,又碰到那个该死的GET调用Web Service,我想肯定又是Web.config需要配置,结果WinForm没有这个配置文件,奇怪,为什么人家的就好使,我写的就不好使呢。
750 0
c#——web service异构系统调用
public static class WebServiceInvoker { /// /// 动态调用WebService /// /// WebService地址 /// 方法名(...
1005 0
使用developer kit 初步打通阿里生活物联网平台
最近小编又发现了一块新大陆,阿里智能生活平台,那么什么是阿里智能生活平台呢。阿里的官方解释如下:生活物联网平台,顾名思义就是应用于生活,以解决家电设备快速智能化的问题。平台针对家电智能化的设备连接、移动端控制、设备管理、数据统计等问题,打包阿里云多款产品,提供了一整套配置化方案,大幅减低“设备-云端-App”的开发成本。
1515 0
+关注
5
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载