7856|10

2734

帖子

0

TA的资源

裸片初长成(初级)

楼主
 

有没有用AVR控制USB芯片PDIUSBD12进行数据传输的啊 [复制链接]

有没有用AVR控制USB芯片PDIUSBD12进行数据传输的啊

我最近要做一个AVR16与PC机数据传输的项目,有没有调过USB的

我选择的芯片是PDIUSBD12,如果有调试过的朋友可以联系我么,或者分享给我点经验,谢谢了

(不知道我把帖子发表到这个AVR板块对不对,如果不对请版主或管理员告诉我下,USB通信方面的问题应该发到哪个板块里,谢谢啦)

此帖出自单片机论坛

最新回复

你读出来了没有?我读的总是错,我参考的是圈圈的代码,但是用的是 STM8S,我也刚刚弄D12,交流交流,Q:4545138 以下我的程序 void main(){  u16 id;  CS_CLR;  //CS_N=0; SUSP_CLR; // SUSP=0; REST_SET;//RST=1; EOT_SET;//EOT=1; DMACK_SET;  //DMACK=1; id=D12ReadID();  while(1; }     ///////以下D12ReadID()用到的子函数部分//////////////// /*******************************************************************函数功能:将数据口设置为输入状态入口参数:返    回:备    注:********************************************************************/D12SetPortIn(void){ //将数据口设置为输入状态 PC_DDR=0X00;  //输入 PC_CR1=0XFF;  //上拉 PC_CR2=0X00;  //无中断 }////////////////////////End of function//////////////////////////////********************************************************************函数功能:将数据口设置为输出状态入口参数:返    回:备    注:********************************************************************/D12SetPortOut(void){ //将数据口设置为输出状态 PC_DDR=0XFF;  //输出 PC_CR1=0XFF;  //退挽输出 PC_CR2=0XFF;  //10MHZ }////////////////////////End of function//////////////////////////////********************************************************************函数功能:将数据写到数据线上入口参数:x_data,需要输出的数据返    回:备    注:********************************************************************/D12SetData(u8 x_data){ D12SetPortIn();////将数据口设置为输入状态 USB_DATA_OUT=x_data; //}////////////////////////End of function//////////////////////////////******************************************************************函数功能:D12写命令。入口参数:Command:一字节命令。返    回:无。备    注:无。********************************************************************/void D12WriteCommand(u8 Command){ //D12SetCommandAddr();  //设置为命令地址  USB_A0_SET;  //D12ClrWr(); //WR置低  USB_WR_CLR;    D12SetPortOut(); //将数据口设置为输出状态(注意这里为空宏,移植时可能有用) D12SetData(Command);  //输出命令到数据口上  //D12SetWr(); //WR置高  USB_WR_SET;  D12SetPortIn(); //将数据口设置为输入状态,以备后面输入使用}////////////////////////End of function////////////////////////////// /********************************************************************函数功能:写一字节D12数据。入口参数:无。返    回:写一字节。备    注:无。********************************************************************/u8  D12GetData(void){ D12SetPortOut; return USB_DATA_OUT; }////////////////////////End of function///////////////////////////// /********************************************************************函数功能:读一字节D12数据。入口参数:无。返    回:读回的一字节。备    注:无。********************************************************************/u8 D12ReadByte(void){ u8 temp; //D12SetDataAddr(); //设置为数据地址 USB_A0_CLR; //D12ClrRd(); //RD置低  USB_RD_CLR;  temp=D12GetData(); //读回数据 //D12SetRd(); //RD置高 USB_RD_SET; return temp; //返回读到数据}////////////////////////End of function///////////////////////////// /********************************************************************函数功能:读D12的ID。入口参数:无。返    回:D12的ID。备    注:无。********************************************************************/u16 D12ReadID(void){ u16 id; //D12WriteCommand(Read_ID); //写读ID命令 Read_ID=0xfd  D12WriteCommand(0xfd); //写读ID命令 Read_ID=0xfd id=D12ReadByte(); //读回ID号低字节 id|=((u16)D12ReadByte())<<8; //读回ID号高字节 return id;}////////////////////////End of function//////////////////////////////  详情 回复 发表于 2010-12-26 03:08
点赞 关注
个人签名我爱电子!
 

回复
举报

2734

帖子

0

TA的资源

裸片初长成(初级)

沙发
 
真的没人用过吗?
此帖出自单片机论坛
 
个人签名我爱电子!
 

回复

2734

帖子

0

TA的资源

裸片初长成(初级)

板凳
 
不是为了刷帖子,的确是纯粹为了学到知识,所以帮自己把帖子顶起来~求求大家给点意见吧
此帖出自单片机论坛
 
个人签名我爱电子!
 
 

回复

2734

帖子

0

TA的资源

裸片初长成(初级)

4
 
为什么呢,没有人知道,求求大家了,给我支持一下USB调试吧:(
此帖出自单片机论坛
 
个人签名我爱电子!
 
 

回复

6366

帖子

4918

TA的资源

版主

5
 
呵呵,以前曾经有过兴趣,试着用AVR调试了一下读取D12的序列号,读取成功了,但是后面就没有再继续了
此帖出自单片机论坛
 
 
 

回复

537

帖子

0

TA的资源

五彩晶圆(初级)

6
 
要和pc机通讯,那pc上也要做程序,这个usb连接后要模拟pid或者串口之类的才能通讯吧。我对usb的没什么研究,可以找一个叫电脑圈圈(computer00),一个搞usb很牛的家伙,学习一下他的东西吧!
此帖出自单片机论坛
 
 
 

回复

2734

帖子

0

TA的资源

裸片初长成(初级)

7
 

回复 5楼 tiankai001 的帖子

那最初调试的时候是要怎么弄的呢,具体步骤流程能讲给我一下么:(" />

还有,版主能不能教我用AVR调试读取D12的序列号啊,现在进展好慢啊,不太会呀

[ 本帖最后由 jjkwz 于 2010-12-8 12:17 编辑 ]
此帖出自单片机论坛
 
个人签名我爱电子!
 
 

回复

2734

帖子

0

TA的资源

裸片初长成(初级)

8
 

回复 6楼 murray 的帖子

哦,我看到了那个圈圈可是他是51啊,我就感觉郁闷勒,咱现在都用AVR,我也不会51啊:(
此帖出自单片机论坛
 
个人签名我爱电子!
 
 

回复

6366

帖子

4918

TA的资源

版主

9
 

原帖由 jjkwz 于 2010-12-8 12:14 发表 那最初调试的时候是要怎么弄的呢,具体步骤流程能讲给我一下么:(" />" /> 还有,版主能不能教我用AVR调试读取D12的序列号啊,现在进展好慢啊,不太会呀

 

我QQ37904969,可以交流一下,

不过我所知有限,帮不了你很多,呵呵,你要有心理准备哦

此帖出自单片机论坛
 
 
 

回复

2734

帖子

0

TA的资源

裸片初长成(初级)

10
 

回复 9楼 tiankai001 的帖子

嗯,好的,我有你QQ的,还记得上次你主动借我芯币换16开发板呢,呵呵
此帖出自单片机论坛
 
个人签名我爱电子!
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 

回复 楼主 jjkwz 的帖子

你读出来了没有?我读的总是错,我参考的是圈圈的代码,但是用的是 STM8S,我也刚刚弄D12,交流交流,Q:4545138

以下我的程序

void main(){

 u16 id;

 CS_CLR;  //CS_N=0;
 SUSP_CLR; // SUSP=0;
 REST_SET;//RST=1;
 EOT_SET;//EOT=1;
 DMACK_SET;  //DMACK=1;
 id=D12ReadID();

 while(1;

}

 

 

///////以下D12ReadID()用到的子函数部分////////////////

/*******************************************************************
函数功能:将数据口设置为输入状态
入口参数:
返    回:
备    注:
********************************************************************/
D12SetPortIn(void){ //将数据口设置为输入状态
 PC_DDR=0X00;  //输入
 PC_CR1=0XFF;  //上拉
 PC_CR2=0X00;  //无中断 
}
////////////////////////End of function/////////////////////////////
/********************************************************************
函数功能:将数据口设置为输出状态
入口参数:
返    回:
备    注:
********************************************************************/
D12SetPortOut(void){ //将数据口设置为输出状态
 PC_DDR=0XFF;  //输出
 PC_CR1=0XFF;  //退挽输出
 PC_CR2=0XFF;  //10MHZ 
}
////////////////////////End of function/////////////////////////////
/********************************************************************
函数功能:将数据写到数据线上
入口参数:x_data,需要输出的数据
返    回:
备    注:
********************************************************************/
D12SetData(u8 x_data){
 D12SetPortIn();////将数据口设置为输入状态
 USB_DATA_OUT=x_data; //
}
////////////////////////End of function/////////////////////////////
/******************************************************************
函数功能:D12写命令。
入口参数:Command:一字节命令。
返    回:无。
备    注:无。
********************************************************************/
void D12WriteCommand(u8 Command)
{
 //D12SetCommandAddr();  //设置为命令地址
 USB_A0_SET;


 //D12ClrWr(); //WR置低 
 USB_WR_CLR;

 

 D12SetPortOut(); //将数据口设置为输出状态(注意这里为空宏,移植时可能有用)
 D12SetData(Command);  //输出命令到数据口上


 //D12SetWr(); //WR置高 
 USB_WR_SET;


 D12SetPortIn(); //将数据口设置为输入状态,以备后面输入使用
}
////////////////////////End of function//////////////////////////////


/********************************************************************
函数功能:写一字节D12数据。
入口参数:无。
返    回:写一字节。
备    注:无。
********************************************************************/
u8  D12GetData(void){
 D12SetPortOut;
 return USB_DATA_OUT; 
}
////////////////////////End of function/////////////////////////////

/********************************************************************
函数功能:读一字节D12数据。
入口参数:无。
返    回:读回的一字节。
备    注:无。
********************************************************************/
u8 D12ReadByte(void)
{
 u8 temp;
 //D12SetDataAddr(); //设置为数据地址
 USB_A0_CLR;
 //D12ClrRd(); //RD置低
 
 USB_RD_CLR;

 temp=D12GetData(); //读回数据
 //D12SetRd(); //RD置高
 USB_RD_SET;
 return temp; //返回读到数据
}
////////////////////////End of function/////////////////////////////

/********************************************************************
函数功能:读D12的ID。
入口参数:无。
返    回:D12的ID。
备    注:无。
********************************************************************/
u16 D12ReadID(void)
{
 u16 id;
 //D12WriteCommand(Read_ID); //写读ID命令 Read_ID=0xfd

 D12WriteCommand(0xfd); //写读ID命令 Read_ID=0xfd
 id=D12ReadByte(); //读回ID号低字节
 id|=((u16)D12ReadByte())<<8; //读回ID号高字节
 return id;
}
////////////////////////End of function//////////////////////////////

此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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