OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4568|回复: 10

使用SPI FLASH模拟U盘遇到连接不上的问题。

[复制链接]

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2019-3-6 11:19:06 | 显示全部楼层 |阅读模式
5金钱
1.问题描述,我移植例程做SPI FLASH模拟U盘,但是一直检测到U盘连接和断开连接提示,而且不断重复提示。从HAL库,移植到标准库上。  在电脑设备管理能看到分配的驱动器号,但是看不到U盘容量,且格式化失败。
2.现象截图如下:

2.jpg
3.由于图1,不断出现连接又断开的情况,应该是检测到USB接线引脚电平的变化,然后中断中不断判断U盘状态,但是我设置引脚模式也不见效果,相关的设置代码如下:
/**
  * @brief  USB_OTG_BSP_Init
  *         Initilizes BSP configurations
  * @param  None
  * @retval None
  */
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{       
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_OTG_FS, ENABLE);                 //开启FS时钟
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
       
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);  
       
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_OTG1_FS);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_OTG1_FS);
}

/**
  * @brief  USB_OTG_BSP_EnableInterrupt
  *         Configures USB Global interrupt
  * @param  None
  * @retval None
  */
void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
        NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn;
       
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}



/**
  * @brief  SPI5初始化,SCLK MOSI MISO引脚以及SPI基本模式
  * @param  
  * @retval
  */
void SPI5_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        SPI_InitTypeDef        SPI_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);                       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI5, ENABLE);                        

        GPIO_PinAFConfig(GPIOF, GPIO_PinSource7, GPIO_AF_SPI5);                
        GPIO_PinAFConfig(GPIOF, GPIO_PinSource8, GPIO_AF_SPI5);                
        GPIO_PinAFConfig(GPIOF, GPIO_PinSource9, GPIO_AF_SPI5);                
               
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                //CS       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;               
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;               
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;               
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;       
       
        GPIO_Init(GPIOF, &GPIO_InitStructure);


        //设置SCLK\MISO\MOSI引脚模式(复用推挽输出)
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_Init(GPIOF, &GPIO_InitStructure);
                                                                                                       
        //SPI模式配置
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;       
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial = 7;
        SPI_Init(SPI5, &SPI_InitStructure);
}

麻烦大家帮忙分析分析,谢谢!


最佳答案

查看完整内容[请看2#楼]

你有单独的试过通过SPI读写Flash吗? 这现象似是读写Flash出问题
没有脑袋
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-6 11:19:07 | 显示全部楼层
你有单独的试过通过SPI读写Flash吗?
这现象似是读写Flash出问题
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-3-6 11:23:48 | 显示全部楼层
两张图片上传失败了,我把串口输出的不断提示U盘连接成功和失败信息如下:
USB USB Device Library v1.1.0  [FS]
eading...
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB DisConnected

USB RUSB Device Library v1.1.0  [FS]
ading...

USB Connected
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB DisConnectUSB Device Library v1.1.0  [FS]
d

USB Connected
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB RUSB Device Library v1.1.0  [FS]
ading...
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB DisConnected

USB RUSB Device Library v1.1.0  [FS]
ading...

USB Connected
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB ReUSB Device Library v1.1.0  [FS]
ding...
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB DisConnected
USB Device Library v1.1.0  [FS]
USB Device Library v1.1.0  [FS]
MSC Interface started.

USB Connected
没有脑袋
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-3-6 15:55:38 | 显示全部楼层
帮顶~~~~~
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-6 18:09:40 | 显示全部楼层
帮顶!
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-3-6 20:19:40 | 显示全部楼层

谢谢!
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-3-6 20:20:11 | 显示全部楼层

谢谢!
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-3-6 20:31:34 | 显示全部楼层
edmund1234 发表于 2019-3-6 20:24
你有单独的试过通过SPI读写Flash吗?
这现象似是读写Flash出问题

这个今天还没时间测试读写,不过SPI通信我测试过,是上电初始化时候可以读到外部挂接SPI FLASH的ID,暂时排除掉是SPI引脚设置的问题了,你提出的点我明天测试一下。谢谢
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-3-25 16:58:21 | 显示全部楼层
edmund1234 发表于 2019-3-6 20:24
你有单独的试过通过SPI读写Flash吗?
这现象似是读写Flash出问题

写入整数,小数,读出来都是正常的。擦除也是正常的。问题还没找到原因,积分先给你。谢谢!
没有脑袋
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-3-25 17:36:38 | 显示全部楼层
这么久还没有搞定?
一分耕耘一分收获。
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
 楼主| 发表于 2019-3-25 17:59:20 | 显示全部楼层
yklstudent 发表于 2019-3-25 17:36
这么久还没有搞定?

搞不定  哈哈~
没有脑袋
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 04:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表