5802|1

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STC单片机无法控制CH376S,很急! [复制链接]

STC单片机无法控制CH376S,很急!
问题:单片机无法完成针对CH376S芯片初始化,16个pin连接CH376S的时候,无法使CH376S晶振起振RSTI恢复到低电位,
但是一旦断开两者的连接,CH376S可以正常工作,晶振起振,复位正常
CH376厂家提供的源代码是针对SST单片机的,现在不知道要如何修改才能使STC12C5A16AD正常控制CH376
编译软件是keil,其他程序都测试过了单片机是正常的,仔细查过硬件完全没问题


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

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

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

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

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

  26. void Delayms(unsigned int n)
  27. {
  28.     unsigned int i,j;
  29.         for (j=n; j>0;j--)
  30.            for (i=112;i>0; i--);
  31. }

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

最新回复

原来还有这种东西  详情 回复 发表于 2013-6-21 13:14
点赞 关注
 

回复
举报

4005

帖子

0

TA的资源

版主

沙发
 
原来还有这种东西
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表