OpenEdv-开源电子网

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

usb读卡器疑问

[复制链接]

19

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2015-12-6
在线时间
47 小时
发表于 2016-9-28 18:19:32 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 我是520老谢 于 2016-9-29 14:40 编辑

将原子的usb读卡器的例程移植到自己的板子上面的时候,出现了一些问题
1、可以看得到设备,但是设备却是空的。
2、有两个设备,一个是SD卡的,一个是使用W25Q16_flash,但是两个设备都没有读出来。
3、有设备的名字,读取flash的代码是好的。
3_1、我觉得会不会是调用的函数出问题了,但是又没看出是哪里的问题。
int main(void)
{                 
        u8 offline_cnt=0;
        u8 tct=0;
        u8 USB_STA;
        u8 Divece_STA;
        GP1_Init();
        delay_init();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
        USART1_Config();
        SPI_FLASH_Init();                                //初始化W25Q
        DeviceID = SPI_FLASH_ReadDeviceID();
        delay_ms(200);        
        FlashID = SPI_FLASH_ReadID();
        
        if (FlashID == sFLASH_ID)
        {
                SPI_FLASH_SectorErase(FLASH_SectorToErase);                  
                SPI_FLASH_BufferWrite(Tx_Buffer, FLASH_WriteAddress, BufferSize);
                SPI_FLASH_BufferRead(Rx_Buffer, FLASH_ReadAddress, BufferSize);
        }

        my_mem_init(SRAMIN);                        //初始化内部内存池
        delay_ms(1800);
        USB_Port_Set(0);         //USB先断开
        delay_ms(700);
        USB_Port_Set(1);        //USB再次连接
        Data_Buffer=mymalloc(SRAMIN,BULK_MAX_PACKET_SIZE*2*4);        //为USB数据缓存区申请内存
        Bulk_Data_Buff=mymalloc(SRAMIN,BULK_MAX_PACKET_SIZE);        //申请内存
        //USB配置
        Set_System();
         USB_Interrupts_Config();   
         Set_USBClock();   
         USB_Init();            
        delay_ms(1800);        
        while (bDeviceState != CONFIGURED);         //等待配置完成

... ...
配置完成是通过的。
试过了,flash的写入和读取都是正常的。
QQ截图20160928181702.png QQ截图20160929142726.png
1、那么没有将储存器的容量读出来.
3、是不是flash没有连接到电脑,只是有显示移动设备而已。
4、USB与电脑连接是枚举,如何知道枚举是否成功,那么读出来的可移动设备是什么。
5、出现了可移动设备却没有数据,是不是USB与电脑连接上了,但是flash的数据无法通过USB上传到电脑。
void Read_Memory(uint8_t lun, uint32_t Memory_Offset, uint32_t Transfer_Length)
{
。。。
        if (TransferState == TXFR_ONGOING )
        {
                if (!Block_Read_count)
                {
                        STA=MAL_Read(        /*lun*/0 ,
                                                        Offset ,
                                                        Data_Buffer,
                                                        Mass_Block_Size[lun]);
                        if(STA)USB_STATUS_REG|=0X08;//SD卡读错误!

                        USB_SIL_Write(EP1_IN, (uint8_t *)Data_Buffer, BULK_MAX_PACKET_SIZE);

                        Block_Read_count = Mass_Block_Size[lun] - BULK_MAX_PACKET_SIZE;
                        Block_offset = BULK_MAX_PACKET_SIZE;
                }
。。。
在这里将flash的数据读出来,我看过了,数据是有的,
我觉得应该是数据没有正常通过USB发送到电脑。所以有移动磁盘,但是没有磁盘的内容。


最佳答案

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

在discio.c里面,自己去找。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-9-28 18:19:33 | 显示全部楼层
在discio.c里面,自己去找。
回复

使用道具 举报

19

主题

66

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2015-12-6
在线时间
47 小时
 楼主| 发表于 2016-9-29 14:26:25 | 显示全部楼层
本帖最后由 我是520老谢 于 2016-9-29 15:09 编辑

工程里面没有discio.c呢?我用的板子是战舰V3,我在论坛看了一下,貌似挺多人遇到同样的问题的,不过都没有解决。我试过flash读写正常,底层是好的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 18:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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