2440下的USB实验

发布者:开国古泉最新更新时间:2015-11-11 来源: eefocus关键字:USB实验 手机看文章 扫描二维码
随时随地手机看文章
static void __irq IsrUsbd(void)

{
U8 usbdIntpnd, epIntpnd;
U8 saveIndexReg = rINDEX_REG;    //保存索引寄存器值(现场保护)
usbdIntpnd = rUSB_INT_REG; //保存中断标志寄存器
epIntpnd = rEP_INT_REG;


if(usbdIntpnd&SUSPEND_INT) //总线上超过 3ms 没有活动信号引起中断
{
rUSB_INT_REG = SUSPEND_INT;//清除中断标志位
}

if(usbdIntpnd&RESUME_INT)
{
rUSB_INT_REG = RESUME_INT; //恢复引起的中断
}

if(usbdIntpnd&RESET_INT) //接收到复位信号引起的中断
{
//ResetUsbd();
ReconfigUsbd(); //重新配置 USB device
rUSB_INT_REG = RESET_INT;    //RESET_INT should be cleared after ResetUsbd().
PrepareEp1Fifo();
}


if(epIntpnd&EP0_INT) //端点 0 中断
{
rEP_INT_REG = EP0_INT;
Ep0Handler(); //进入控制传输中断处理程序
}

if(epIntpnd&EP1_INT)
{
rEP_INT_REG=EP1_INT;
Ep1Handler(); //进入 Ep1 中断处理程序(BULK IN)
}


if(epIntpnd&EP2_INT)
{
rEP_INT_REG = EP2_INT;
//Ep2Handler();
}


if(epIntpnd&EP3_INT)
{
rEP_INT_REG = EP3_INT;
Ep3Handler(); //进入 Ep3 中断处理程序(BULK OUT)
}


if(epIntpnd&EP4_INT)
{
rEP_INT_REG = EP4_INT;
//Ep4Handler();
}


ClearPending(BIT_USBD); //USB 设备中断处理完毕,清除中断标志位
rINDEX_REG = saveIndexReg; //恢复索引寄存器原来的值(恢复现场)
}


6.2 端点 1 的数据传输程序


void Ep1Handler(void)

{
U8 in_csr1;


rINDEX_REG = 1;

in_csr1 = rIN_CSR1_REG;


//I think that EPI_SENT_STALL will not be set to 1.
if(in_csr1 & EPI_SENT_STALL) //USB 已经发布了一个 STALL 握手信号,由此引起该中断

{
CLR_EP1_SENT_STALL();//清除 SENT_STALL 位,STALL 状态结束

return;

}


//IN_PKT_READY is cleared


//The data transfered was ep1Buf[] which was already configured transferIndex++;
if(UsbState==0x01234567)
PrepareEp1Fifo();//准备好发送的数据,把 IN_PKT_READY 置位

//IN_PKT_READY is set

//This packit will be used for next IN packit.

return;

}

6.3 USB Device 初始化函数


void UsbdInit(U8 fun)

{

isUsbdSetConfiguration = 0;

//MDIV=40,PDIV=4,SDIV=1

//Upll = (m * Fin) / (p * 2**s)

//m = (MDIV + 8), p = (PDIV + 2), s = SDIV

//Upll=48MHz

rUPLLCON = (40<<12) | (4<<4) | 1;
//初始化描述符 InitDescriptorTable(fun); ReconfigUsbd();


UsbState = 0;
}


6.4 USB 下载函数

static int BoardUsbDownload(U32 addr, U32 run)

{

U8 fun;

int len;


//GPH9-->output    GPH10-->output

rGPHCON = rGPHCON&~(0xf<<18)|(0x5<<18);

//GPG9-->input

rGPGCON &= 0xfff3ffff;

fun = 1;
//USB Device 初始化 UsbdInit(fun); Delay(100);
//GPG9-->output rGPGCON |= 0x00040000;
//GPG9 ouput 1
rGPGDAT |= 0x0200;


//中断服务程序
pISR_USBD =(unsigned)IsrUsbd; ClearPending(BIT_USBD); EnableIrq(BIT_USBD);
len = WaitDownload(addr); DisableIrq(BIT_USBD);
rGPGCON &= 0xfff3ffff; //GPG9 input


if(len>0) {

Uart_Printf("nUSB download finished,press any key to exitn");

}


return len;

}

关键字:USB实验 引用地址:2440下的USB实验

上一篇:stm32 发脉冲
下一篇:基于飞凌2440开发板的linux-2.6.28移植过程

推荐阅读最新更新时间:2024-03-16 14:38

S3C2440裸机------触摸屏_利用ADC读取触摸屏坐标
前面我们在按下触摸屏时只是打印调试信息,现在我们再按下的中断处理函数里面增加ADC的配置代码,当我们按下后利用ADC读取触摸屏的坐标。 #include ../s3c2440_soc.h #define ADC_INT_BIT (10) #define TC_INT_BIT (9) #define INT_ADC_TC (31) /* ADCTSC's bits */ #define WAIT_PEN_DOWN (0 8) #define WAIT_PEN_UP (1 8) #define YM_ENABLE (1 7) #define YM_DISABLE (0 7) #de
[单片机]
ARM mini2440裸奔 跑LCD手写代码
ARM裸奔跑代码,LCD 实现手写功能,(mini2440)裸奔又进了一步,更一步熟悉ARM体系结构 部分源码预览: ;========================================= ; NAME: 2440INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables ; HISTORY: ; 2002.02.25:kwtark: ver 0.0 ; 2002.03.20:purnnamu: Add some functions for testing STOP,Sleep mode
[单片机]
基于S3C2440处理器SPI移植全过程
环境 硬件:S3C2440(ARM920T) 嵌入式操作系统:Linux2.6.24内核 文件系统:Yaffs2文件系统 服务器:SuSe10.0 Linux服务器 第一步:内核配置 需要在内核中选择以上几个选项: 很多网友发邮件说Linux2.6.24内核在SPI选项上未发现有Samsung S3C2440 series SPI 或 Samsung S3C24XX series SPI 和User mode SPI device driver support这两个选项。 其实在Linux2.6.24内核里已经兼容了对SPI的操作。只是在Linux2.6.24/drivers/spi/Kconfig中未能选中此选项
[单片机]
基于S3C<font color='red'>2440</font>处理器SPI移植全过程
mini2440 I2C驱动的分析与学习(三)
最后说一下i2c和smbus的关系。 首先在一个链接中详细的介绍了smbus协议。http://www.mjmwired.net/kernel/Documentation/i2c/smbus-protocol。 我理解的大意就是,i2c是smbus的一个子集,也就是说凡是支持i2c的设备应该都是支持smbus协议的。 在smbus协议中,定义了几种主机与外设交互的方法。支持i2c协议的设备可以通过这些方法进行交互,当然也可以有自己更加直接的方法。比如说在mini2440上面连接的eeprom,它就支持连续多字节的读和写,做多是16字节。这个操作起来是很方便的。 在i2c-core.c中,实现了i2c_smbus相关
[单片机]
嵌入式linux开发 (九) RAM(3) s3c2440外扩sdram
- JZ2440 S3C2440 ARM920T -内置 Steppingstone (4K-Byte SRAM) 无rom -外扩 EM63A165TS-6G:32MB/片,SDRAM,共两片 soc The S3C2440A is developed with ARM920T core, 0.13um CMOS standard cells and a memory complier. The ARM920T implements MMU, AMBA BUS, and Harvard cache architecture with separate 16KB instruction and 16KB
[单片机]
嵌入式linux开发 (九) RAM(3) s3c<font color='red'>2440</font>外扩sdram
2440裸机程序——跑马灯
工程当中需要添加 S3C2440A.s ;2440lib.c;main.c;led.c 这四个程序。 主程序: /********************************************************************************************* * File name: main.c * Author: ZXL * Description: 1.跑马灯 2.LED灯以二进制方式显示1-15 * History: 2013.5.5 *********************************************************************
[单片机]
2440裸机编程之七 模数转换器ADC
S3C2440A 内部具有8 路模拟信号输入的10 位模/数转换器(ADC)。 用到的寄存器有: ADCCON:用于选择通道、设置频率、开始转换、结束标志 ADC的频率 = PCLK/(ADCCON +1) ADCDATn:用于读出ADC通道n的转换结果:ADCDATn 下面是个ADC通道0的实验程序: //******************************************************************** #define adc_frequency 2000000 void Main(void) { int i; ……硬件初始化…… Uart_Printf( ADC实验n
[单片机]
<font color='red'>2440</font>裸机编程之七 模数转换器ADC
基于S3C2440微处理器的工业超声探伤仪设计
  超声探伤仪广泛应用在航空航天、石油化工、冶金造船等行业,用于检测金属或非金属内部缺陷以及分析材质,是无损检测领域重要的检测仪器之一。   超声探伤时,应用得最多的是A型显示,如图1所示。在A型显示中,横坐标代表被测物的深度,纵坐标代表回波信号的幅度。   目前同内生产的数字式超声探伤仪仍主要以单片机为核心,单片机固有的性能瓶颈制约了仪器的性能指标和功能扩展,与国外先进水平相比,国产产品技术水平仍有较大的差距。   本文介绍的新型嵌入式数字超声探伤仪以32位RISC CPUS3C2440为控制中心,以高性能FPGA Spartan3为信号采集及处理核心,并辅以功能强大的Linux操作系统和MiniGUI图形库,实现了一
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved