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

📄 gpio.c

📁 LPC2148 通过 CH375 读写U盘的例子
💻 C
字号:
#include "config.h"
uint32 u;
void delay2us(void)
{
	uint16 i=9;
	while(i--);
}

void delay1us(void)
{
	uint16 i=5;
	while(i--);
}

void	mDelay100mS(void )
{
	uint16	i=5000;
	while(i--)
	delay2us();	
}




void gpio_init(void)
{
	SCS     = 0;
	PINSEL0 = 0x00000000;
	PINSEL1 = 0x00000000;
	PINSEL2 = 0x00000004;
	IODIR0  = (1<<25) | (1<<28) | (1<<29) | (0x80000000) ; //cs rd wr a0 set to out	
	IOSET0  = 1<<28 | 1<<29;
	
}


void xWriteCH375Cmd( uint8 mCmd )
{ 
	//uint32 i=1;
	IODIR0 = (1<<25) | (1<<28) | (1<<29) | (0x80000000)  | 0x00ff0000;
	delay2us();	
	
	IOPIN0 = (IOPIN0 & (~(1<<25 | 0x80000000))) | 0x80000000;
	
	IOPIN0 = (IOPIN0 & (~(1<<28 | 0x80000000))) | 0x80000000; //WR置0
	
	IOPIN0 = (IOPIN0 & 0x7f00ffff) | ((uint32)mCmd<<16) | 0x80000000; //写XD0~7

	IOPIN0 = IOPIN0 | (1<<28) | 0x80000000;	  //WR置1
	
	IOSET0 = 1<<25;
	
	delay2us();	
	

}

void xWriteCH375Data( uint8 mData ) 
{
	//uint32 i=1;	
	
	IODIR0 = (1<<25) | (1<<28) | (1<<29) | (0x80000000)  | 0x00ff0000;
	
	IOCLR0 = 0x80000000 | 1<<25;               //A0置0,CS置0
	
	IOPIN0 = IOPIN0 & (~(1<<28)); //WR置0
	
	IOPIN0 = (IOPIN0 & 0xff00ffff) | ((uint32)mData<<16); //写XD0~7
	
	IOPIN0 = IOPIN0 | (1<<28);	  //WR置1
	
	IOSET0 = 1<<25;
	
	delay1us();	
	

}

uint8 xReadCH375Data( void ) 
{
	uint8 xd;
	IODIR0 =( (1<<25) | (1<<28) | (1<<29) | (0x80000000) ) & 0xff00ffff;
	
	IOCLR0 = 0x80000000 | 1<<25;                 //A0置0,CS置0
	
	IOPIN0 = IOPIN0 & (~(1<<29)); //RD置0
	
	IOPIN0 = IOPIN0 | (1<<29);	  //RD置1
	
	xd     = (IOPIN0 & 0x00ff0000)>>16; //读取XD0~7
	
	IOSET0 = 1<<25;
	
	delay1us();	
	return xd;	 
}

⌨️ 快捷键说明

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