打印

STC单片机无法控制CH376S,很急

[复制链接]
4712|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
enlic|  楼主 | 2013-6-21 11:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC单片机无法控制CH376S,很急!
问题:单片机无法完成针对CH376S芯片初始化,16pin连接CH376S的时候,无法使CH376S晶振起振RSTI恢复到低电位,
但是一旦断开两者的连接,CH376S可以正常工作,晶振起振,复位正常
CH376厂家提供的源代码是针对SST单片机的,现在不知道要如何修改才能使STC12C5A16AD正常控制CH376
编译软件是keil,其他程序都测试过了单片机是正常的,仔细查过硬件完全没问题


分析下来是程序编写问题关键是不清楚如何控制P0口的状态诸如P0 =0xFF之类,以及P0M0P0M1的控制,void     CH376_PORT_INIT( void)应该如何写?
目的:用单片机通过专用芯片读写SD
方案:STC12C5A16AD单片机+CH376S芯片

厂家源代码
/* 单片机的引脚    CH376芯片的引脚*/
      P3.3                 A0    //->
      P3.5                 CS#   //-> 如果模拟出的并口上只有CH376,那么CS#可以直接接低电平,强制片选
      P3.6                 WR#   //->
      P3.7                 RD#   //->
      P3.2                 INT#  //<-
      P0(8位端口)         D7-D0       */
sbit        CH376_A0        =        P3^3;
sbit        CH376_CS        =        P3^5;
sbit        CH376_WR        =        P3^6;
sbit        CH376_RD        =        P3^7;
//sbit        CH376_INT        =        P3^2;

#define        CH376_DATA_DAT_OUT( d )        { P0 = d; }        /* 向并口输出数据 */
#define        CH376_DATA_DAT_IN( )        ( P0 )                /* 从并口输入数据 */
#define        CH376_DATA_DIR_OUT( )                        /* 设置并口方向为输出 */
#define        CH376_DATA_DIR_IN( )        { P0 = 0xFF; }        /* 设置并口方向为输入 */

#define CH376_INT_WIRE          INT0        /* 假定CH376的INT#引脚,如果未连接那么也可以通过查询状态端口实现 */

void        CH376_PORT_INIT( void )  /* 由于使用通用I/O模拟并口读写时序,所以进行初始化 */
{
        CH376_CS = 1;
        CH376_WR = 1;
        CH376_RD = 1;
        CH376_A0 = 0;
        CH376_DATA_DIR_IN( );  /* 设置并口输入 */
}

void Delayms(unsigned int n)
{
    unsigned int i,j;
        for (j=n; j>0;j--)
           for (i=112;i>0; i--);
}

UINT8        main( void )  /* 初始化CH376 */
{
        UINT8        res;
        Delayms(60);//必须延迟50ms以上
        CH376_PORT_INIT( );  /* 接口硬件初始化 */
        xWriteCH376Cmd( 0x06 );  /* 测试单片机与CH376之间的通讯接口 */
        xWriteCH376Data( 0x55 );
        res = xReadCH376Data( );
    //执行到此处即没有反应了,无法得到CH376的回应
        if ( res != 0xAA ) return( ERR_USB_UNKNOWN );  /* 通讯接口不正常,可能原因有:接口连接异常,其它设备影响(片选不唯一),串口波特率,一直在复位,晶振不工作 */
        xWriteCH376Cmd( CMD11_SET_USB_MODE );  /* 设备USB工作模式 */
        xWriteCH376Data( 0x03 ); //操作SD卡的话设置模式代码为03H时切换到SD卡主机模式,用于管理和存取SD卡中的文件;
}


相关帖子

沙发
gonggu8181| | 2013-7-4 06:47 | 只看该作者
加延迟,stc单片机速度是普通51的12倍。加上5-10延迟绝对可以

使用特权

评论回复
板凳
sdwys| | 2013-7-4 09:10 | 只看该作者
接口时序处理一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝