OpenEdv-开源电子网

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

关于ch376t的问题,紧急求助大虾们

[复制链接]

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-4-19
在线时间
0 小时
发表于 2013-11-26 14:58:06 | 显示全部楼层 |阅读模式
ch376t一些初始化的东西都是对的,发送DISK_CONNECT命令也能得到预期的结果。可是发送DISK_MOUNT命令,再发送GET_STATUS只能收到31,22,7f的序列,没有一个是正确的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-11-26 15:01:34 | 显示全部楼层
/* ============================================================ */

/*
 * SPI operation
 *
 * */
static void spi2_init(void)
{
    RCC->APB2ENR |= ( 1 << 3 ); // enable GPIOB clock
    RCC->APB1ENR |= ( 1 << 14 ); // enable SPI2 clock

    // config GPIOB B12,13,14,15
    GPIOB->CRH &= ~( (unsigned long)0xffff << 16 );
     GPIOB->CRH |= ( (unsigned long)0xbbb3 << 16 );

    GPIOB->ODR |= ( 0xf << 12 );

    // config SPI
    SPI2->CR1 &= ~( 1 << 0 ); // CPHA == 0
    SPI2->CR1 &= ~( 1 << 1 ); // CPOL == 0
    SPI2->CR1 |= ( 1 << 2 ); // be master
    SPI2->CR1 &= ~( 7 << 3 );
    SPI2->CR1 |= ( 7 << 3 ); // CLK / 4
    SPI2->CR1 &= ~( 1 << 7 ); // MSB first , Fsck = Fcpu / 256
     SPI2->CR1 |= ( 1 << 8 ); // SSI
     SPI2->CR1 |= ( 1 << 9 ); // SSM
     SPI2->CR1 &= ~( 1 << 10); // full duplex
     SPI2->CR1 &= ~( 1 << 11); // 8 bits format
     SPI2->CR1 |= ( 1 << 6 ); // enable SPI2

     spi2_read_writ_byte(0xff);
}

/* ============================================================ */

unsigned char spi2_read_writ_byte( unsigned char tx_data )
{
    unsigned char retry = 0 ;

    while( ( SPI2->SR & ( 1 << 1 ) ) == 0 )
    {
        retry ++ ;
    }
    SPI2->DR = tx_data ;

    retry = 0 ;     
     while( ( SPI2->SR & ( 1 << 0 ) ) == 0 )
    {
    retry ++ ;
     }
    return SPI2->DR ;
}
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-11-26 15:03:23 | 显示全部楼层
回复【2楼】wangwum:
---------------------------------
int ch376t_send_cmd( unsigned char cmd )
{
    return spi2_read_writ_byte(cmd);
}

int ch376t_write_byte( unsigned char data )
{
    return spi2_read_writ_byte(data);
}

unsigned char ch376t_read_byte(void)
{
    return spi2_read_writ_byte(0xff);
}
这些是封装代码
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-11-26 15:12:28 | 显示全部楼层
回复【2楼】wangwum:
---------------------------------
static int start_disk_mount(void)
{
    unsigned char status = 0 ;
    int i = 0 ;

    CH376T_SEL();
    delay_ms(10);

    do
    {
        ch376t_write_byte(DISK_MOUNT);   
        delay_ms(10);

        status = ch376t_write_byte(GET_STATUS);
        printer_print( "status : %x\n", status);
        status = ch376t_read_byte();
        printer_print( "status : %x\n", status);
        status = ch376t_read_byte();
        printer_print( "status : %x\n", status);
        status = ch376t_read_byte();
        i ++ ;
    }while( ( status != USB_INT_SUCCESS ) && ( i < 5 ) );

    if( i >= 5 )
    {
        return -1 ;
    }

    CH376T_DSL();

    return 0 ;
}
这是发送DISK_MOUNT命令的函数。

回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-11-26 20:18:01 | 显示全部楼层
没用过,帮顶
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-4-19
在线时间
0 小时
 楼主| 发表于 2013-11-26 20:19:20 | 显示全部楼层
回复【5楼】xiaoyan:
---------------------------------
回复【5楼】xiaoyan:
---------------------------------
谢谢你的帮顶之恩。
回复 支持 反对

使用道具 举报

0

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2018-3-20
在线时间
74 小时
发表于 2023-4-24 08:34:25 | 显示全部楼层
帮顶                                    
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 11:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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