这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 天籁齐舞★USBHost对USB从设备供应商ID和产品ID等信息的读取★

共34条 1/4 1 2 3 4 跳转至

天籁齐舞★USBHost对USB从设备供应商ID和产品ID等信息的读取★

助工
2012-11-22 21:59:01     打赏

【天籁齐舞】
在大家的支持下,我的队伍正式建立起来了,现确定该组成员共有4名成员组成,分别为:
andery88    qqjiaqq001    zhangpeng759    tuyukui2
进度表:

时间

进展内容

链接

2012年11月22日

收到SAKURA开发板

【1楼】

2012年11月27日

学习Arduino的SPI函数(遇问题,求解答)

【14楼】

2012年11月29日  SAKURA开发板MCU及外设配置说明 【22楼】
2012年11月29日  GR-SAKURA开发板程序局域网远程下载设想 【23楼】
2012年11月29日 

TEthernet库的库函数解析 

【24楼】
2012年11月30日 

SPI通信测试成功 

【26楼】 
2012年11月30日 

关于对语言模块VS1053B内部寄存器的配置

【29楼】
2012年12月01日  关于SAKURA开发板上SPI的CS管脚配置  【31楼】 
2012年12月02日  SAKRUA开发板对VS1053B的各种命令函数  【32楼】 
2012年12月04日  语言平台的硬件架构的搭建  【37楼】 
2012年12月07日  SPI读操作最高速测试--1.5MHz  【42楼】
2012年12月10日  VS1053B的SPI驱动程序(附有源代码)  【43楼】 
2012年12月13日  Ardiuno开发板上的mini-SD卡读写  【46楼】 
2012年12月19日  MP3音乐文件的解析  【49楼】 
2012年12月25日  MP3音乐文件的实测解析  【52楼】
2013年01月05日  USBHost的库函数解析  【53楼】
2013年01月06日  USBHost对USB从设备的插入识别、删除和拔出  【54楼】 
2013年01月07日  USBHost对USB从设备供应商ID和产品ID等信息的读取  【56楼】
     


昨天,收到jackwang的电话,告知给我邮寄了Sakura开发板,今天上午就收到了板子,现秀一下:
Sakura开发板的正面图:




关键词: 天籁     齐舞     USBHost     设备     供应商     产品         

助工
2012-11-22 22:07:42     打赏
2楼
Sakura开发板背面图:


Sakura开发板的全图:

上图中的左下角是一个USB主机接口,是随此开发板一起的,说明书上说是当用到USB主机模式的时候,用户可以自行焊接,焊接点就在mini-USB接口的背面。



助工
2012-11-22 22:29:39     打赏
3楼
说实话我也是第一次接触瑞萨这款新型的RX系列CPU的开发板,也是第一次接触开源的Arduino软硬件开放平台,需要学习的还很多,希望我的团队能够团结一致完成本次项目计划,加油!以下是我参考了campozeng、瑞萨小鱼等的进程帖,整理了如下的一些学习资料:
 1、从上图可以看出固然本款瑞萨推出的新型RXCPU内核对大家来说还比较陌生,不过由于本开发板采用了开源的Arduino硬件平台,使得此款开发板上手很容易。
       
从随板子附带的一张管脚分布图上可以看出,本开发板共有:
   普通I/O管脚从I/O0-I/O13,I/O22-I/O55共48个;       
   模拟输入端(A/D转换I/O)从AN0-AN7共8个;      
   共计56个用户可用I/O口。
开发板上自带的四排母排插也是符合Arduino标准的通用I/O口配置,方便与其它Arduino器件进行连接。
2、此开发板下载程序的过程很特别,整个下载过程如下:    
   1)将此开发板通过mini-USB接口与PC相连,并将板子上的SW3开关拨到“RUN模式”下,如果起初板子内部无Image文件,则此时四个蓝色LED指示灯恒亮,如若其内部已有Image文件,则此时就开始运行内部的程序。     
   2)按下SW1:RESET按钮,如果是开发板第一次与PC机相连,则此时会先安装驱动,驱动安装完成后会有一个类似优盘的盘符在我的电脑显示出来,如下图所示:

      从图上可以看出GR-SAKURA最大的存储空间为464K字节,这也是在不进行外部Flash扩展的情况下,此芯片能够容纳的最大Image的大小。         3)将编译好的Image文件直接拖动到此盘符里即可(通过复杂粘贴亦可),稍等2秒过后,盘符会自动消失,于此同时在开发板上也开始运行刚下载的程序。         只要不再次向GR-SAKURA盘符内拖放Image文件,则前一次放置的Image文件就一直保留。 

助工
2012-11-22 22:32:06     打赏
4楼
jobs你可是瑞萨RL78开发的状元啊,这个开发你也不能落下啊,我这才刚刚收到板子!

助工
2012-11-22 22:44:23     打赏
5楼
程序下载原理推测:       
   1)当按下RESET按钮后,RX系列CPU芯片进行复位;        
   2)  复位后启动USBSlave模式,并且RXCPU不断检测USBmass内部的存储器,检测是否其内部有Image(.bin)文件;        
   3)一旦检测到USBmass中有Image文件的存在,就将其转移至RXCPU芯片内置的Flash中,完成程序的下载更新过程。 
3、SAKURA开发板软件开发所采用的软件也是采用的ArduinoIDE界面,所不同的就是瑞萨这里所采用的编译软件不是安装到PC机上,而是安装在了云端(瑞萨服务器上),用户只需注册后登录相应的网页,然后,再网页上进行编程、编译、输出Image文件,最后再通过下载的方式将Image文件下载到PC机上,最终再通过USB连接线将Image文件下载到RX芯片里,完成整个程序的下载。具体云客户端编辑界面如下图所示:

4、SAKURA开发板的入门级使用说明书:http://sakuraboard.net/index_en.html
 这里面详细地介绍了从开发板与PC连接到示例程序的下载再到程序的编辑后下载的步骤。 
5、SAKURA开发板的硬件特性参数以及所提供的功能接口说明:http://sakuraboard.net/gr-sakura_en.html 
这里详细地介绍了SAKURA开发板上所提供的各种功能接口、SW开关、短路线的功能。 
6、SAKURA开发板主MCU所采用的芯片R5F563NBDDFP--的Datasheet:
http://share.eepw.com.cn/share/download/id/79518 
7、接下是时候好好学习一下Arduino的基础知识了!共同学习!一起进步! 



助工
2012-11-27 23:52:25     打赏
6楼

最近几天,一直在学习camozeng、瑞萨小鱼等的学习教程,并对其中的部分示例进行了模仿,由此也初步了解了Arduino系统的开发方法。
不过,看了许多鲜有介绍SPI class通信的相关例程,由于本次方案中要用到SPI通信,所以有必要将Arduino的SPI库函数好好地学习一下。
首先,我的学习网址,瑞萨的樱花开发板的Web编译器内部自带的教程,链接如下:
http://tool-cloud.renesas.com/Renesas/ref/library_spi.html
原文是日文的,看不懂,在Bing翻译的帮助下,整理出以下文档:

SPI 通信协议库

 

SPI ( SPI class)

         SPI库用于两个微控制器之间的通信,如果要在程序中使用,需要在文件头中加入:

#include<spi.h>

begin

概要

初始化,当与SDMMC库一起使用时,SDMMC先开始

语法

SPI.begin()

参数

No

返回值

No

 

end

概要

停止SPI,释放所占用的I/O口管脚。

语法

SPI.end()

参数

No

返回值

No

 

setBitLength

概要

设定发送和接收的比特的长度。

语法

SPI.setBitLength(int bitLength)

参数

bitLength:可选的值为:816,20,24,32.默认值是8

返回值

No

 

SetBitOrder

概要

设定一个方向,高位先发送还是低位先发送。

语法

SPI.setBitOrder(bitOrder)

参数

bitOrder:bit order(MSBFIRST, LSBFIRST).默认为MSBFIRST

返回值

No

 

SetClockDivider

概要

设置SPI时钟的速度。

语法

SPI.setClockDivider(divider)

参数

下列值任选其一:divider

SPI_CLOCK_DIV2: 24MHz

SPI_CLOCK_DIV4: 12MHz

SPI_CLOCK_DIV8: 6MHz

SPI_CLOCK_DIV16: 3MHz

SPI_CLOCK_DIV32: 1.5MHz

SPI_CLOCK_DIV64: 750KHz

SPI_CLOCK_DIV128: 375KHz

返回值

No

 

SetDataMode

概要

设置SPI数据传输的模式。

语法

SPI.setDataMode(mode)

参数

设定如下其中一个模式:mode。默认的模式为:0。当设置SDMMC23模式不可用。

SPI_MODE0

SPI_ MODE1

SPI_ MODE2

SPI_ MODE3

返回值

No

 

transfer

概要

发送和接收SPI的数据。

语法

SPI.transfer(value)

参数

Value: 数据位从832位,其位数的长短取决于setBitLength中的设置。

返回值

SPI接收总线上的数值。

 


助工
2012-11-27 23:57:55     打赏
7楼

再学习了SPI库函数之后,对基于Arduino的SPI通信有了一定的了解,同时再结合VS1053B的Datasheet中关于SPI通信协议的说明,为了有利于大家帮我解决我的疑惑,我特将刚刚学习到的VS1053B的SPI通信协议再次介绍一下:

VS1053BSPI控制总线的使用

 

VS1053B中被用于串行数据接口SDI和串行控制接口SCI

由于VS1053B内部有多种工作模式,主要是考虑到向下兼容而设定,其中包括VS1002新模式和VS1001兼容模式,模式的设定由VS1053B中的SM_SDINEW的值来决定,SM_SDINEW=1时为VS1002新模式,SM_SDINEW=0时为VS1001兼容模式,并且官方建议使用VS1002新模式,所以这里决定采用VS1002新模式,这也是VS1053B启动时的缺省值。

         VS1001兼容模式下,控制SPI总线和数据传输的SPI总线是独立的:

即,控制SPI总线由:

XCS:控制总线片选信号,低电平有效的片选信号。

         SCK:控制总线的串行时钟输入,此时钟也作为内部寄存器接口的工作时钟来源。SCK电平在平时可以是时钟信号也可以是平静信号(持续高电平或持续低电平),只要在XCS信号变低之后的首个时钟上升沿将被定义为首个被写入VS1053B的比特位。

         SI:控制总线的串行输入,如果片选XCS有效,则SI是在时钟SCK的上升沿上取样的。

         SO:控制总线的串行输出,在Master端向VS1053B读数据时,数据是逐位移动输出在时钟SCK的下降沿上。而在写入是,它是处于高阻态的。

而,数据传输SPI总线是由:

         BSYNC:数据传输同步信号,低电平有效,当BSYNC为低时指示数据开始传输。

         DCLK:数据总线的串行时钟输入,在BSYNC信号变低后,首个DCLK的上升沿将被定义为首个数据比特位。

         SDATA:数据传输的串行输入至VS1053B,如果同步信号BSYNC有效,SDATA是在数据时钟DCLK的上升沿上取样的。

         VS1002新模式中考虑到对外接口的简洁性,就将控制SPI接口和数据SPI接口整合到了一起,即将:SCKDCLK整合在一起为:新的SCK

                              SISDATA整合在一起为:新的SI

                              BSYNC改换为XDCS,作为数据传输SPI的片选信号;

         如此,整合后的SPI管脚如下表:

 

         这里控制SPI总线和数据传输SPI总线的SPI模式的设定是由SCI_MODE来决定的,详见VS1053Bdatasheet的第8.7节。

待续。。。


助工
2012-11-28 00:01:16     打赏
8楼

SCI串行命令接口的串行协议(SCI

 

         由于SCI数据是在SCK的上升沿读取的,所以用户只能在SCK的下降沿上更新数据。每个字节的MSB总是被首先发送。在整个传送操作的期间,XCS必须要保持为低电平。

         这些操作是通过8为指令码来指定的:

 

SCI读操作:

 

XCS信号应该在16位数据从SO口移动送出后驱动到高电平。

DREQ在读取操作期间会被芯片短暂的拉到低电平,这是非常短的时间,并不需要USER特别的留意。

 

SCI写操作:

 

在这个数据字移位发送的最后一个时钟结束之后,XCS应该上拉到高电平结束这个写入顺序。(关于具体的指令可参见VS1053Bdatasheet的第8.7章)

         
待续。。。


助工
2012-11-28 00:38:26     打赏
9楼

SCI寄存器:

 

默认的情况下:

DCLK在上升沿有效,SDIMSBFIRSTVS1002本地SPI模式,LINE1作为声音的输入端,输入时钟的范围为:1213MHz
由此,可知,在VS1053B复位后,默认的SPI模式为:SPI_Mode0模式。

程序待续中。。。


助工
2012-11-28 01:00:24     打赏
10楼
SPI测试程序:
程序中要调用库函数:gr_sakura_spi,如图所示:

gr_sketch.cpp中的程序如下:
#include <rxduino.h>
#include <spi.h>

void setup(){
pinMode(PIN_LED0,OUTPUT);
Serial.begin(9600); //set baudrate 9600bps
//SPI.port=SPI_PORT_CS0_DUINO;
SPI.port=SPI_PORT_RAXINO_EXT;
SPI.setBitOrder(MSBFIRST);
SPI.setBitLength(16);
SPI.setClockDivider(SPI_CLOCK_DIV64);
SPI.setDataMode(SPI_MODE1);
SPI.begin();
Serial.println("Please send SPI command!");
}

void loop()
{
digitalWrite(PIN_LED0,1); //set led0 on
while(!Serial.available()); //wait command from upper computer
char c=Serial.read();
if(c=='r') //if receive command 'r'
{
//unsigned long res = SPI.transfer(34275379);
unsigned long res = SPI.transfer(51052544); //0000 0011 0000 1011 0000 0000 0000 0000
//unsigned long res1 = SPI.transfer(0);

//unsigned long res1 = SPI.transfer(2197881089);
Serial.println(res, BIN); //output the result in BIN
//Serial.println(res1, BIN); //output the result in BIN
}
else
{
Serial.println("Please send the right SPI command!");
}
digitalWrite(PIN_LED0,0); //turn off the led0
}


目前,还纠结在transfer()函数中,经过数次测试,均不能有效返回预期结果,希望大侠们给予指点,谢谢!

共34条 1/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]