⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb.c

📁 基于TMS320F2812的USB通讯C源码(初始化)
💻 C
字号:
#include "DEC2812.h"
#include "DSP28_Device.h"
#include "DEC2812_USB.h"

#ifndef _rtc_var
#define _rtc_var

unsigned int readFlag;
unsigned int setupCnt;
unsigned int sx2Setup;
unsigned int irqValue;
unsigned short setupDat;
unsigned int setupBuff[512];
unsigned int sx2EP0Buf;
unsigned int FLAGS_READ;
unsigned int sx2EnumOK;
unsigned int sx2BusActivity;
unsigned int sx2Ready;

#endif

/*********************************************************************************************
	filename:	void USB_Command_Write(unsigned int Value)
	
*********************************************************************************************/
void USB_Command_Write(unsigned int Value)
{
	*USB_Command = Value;
}

unsigned int USB_Command_Read(void)
{
	unsigned int i;
	i = *USB_Command;
	return(i);
}

unsigned short SX2_CommandWriteByte(unsigned int Value)
{
	if((*USB_StatusRead & 0x08) == 0)
	{
		return(FALSE);
	}
	USB_Command_Write(Value);
	return(TRUE);
}


unsigned short SX2_Read(unsigned int addr,unsigned int *data)
{
	/*READY信号准备好?*/
	if((*USB_StatusRead & 0x08) == 0)
	{
		return(FALSE);
	}
	/*命令寄存器地址、读操作*/
	addr = addr & 0x3f;
	USB_Command_Write(0xC0 | addr);
	/*判断中断响应吗?*/
	readFlag = TRUE;
	/*等待读标志为FALSE*/
	while(readFlag);
	/*READY信号准备好?*/
	if((*USB_StatusRead & 0x08) == 0)
	{
		return(FALSE);
	}
	*data = USB_Command_Read();
	return(TRUE);
}

unsigned short SX2_Write(unsigned int addr,unsigned int value)
{
	/*READY信号准备好?*/
	if((*USB_StatusRead & 0x08) == 0)
	{
		return(FALSE);
	}
	/*命令寄存器地址、读操作*/
	addr = addr & 0x3f;
	USB_Command_Write(0x80 | addr);
	/*写DATA*/
	USB_Command_Write((value>>4) & 0x0f);
	USB_Command_Write(value & 0x0f);
	/*READY信号准备好?*/
	if((*USB_StatusRead & 0x08) == 0)
	{
		return(FALSE);
	}
	return(TRUE);
}

unsigned short Load_Descriptors(char length,char* desc)
{
	unsigned char i;
	if(!SX2_Write(SX2_DESC,(unsigned int)length))
	{
		return(FALSE);
	}
	SX2_CommandWriteByte((unsigned int)((length >> 12) & 0x0f));
	SX2_CommandWriteByte((unsigned int)((length >> 8) & 0x0f));
	SX2_CommandWriteByte((unsigned int)((length >> 4) & 0x0f));
	SX2_CommandWriteByte((unsigned int)(length & 0x0f));
	return(TRUE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -