ILI9481-STM32平台初始化代码

/****************************************************************************
* 名 称:void ili9320_WriteIndex(u16 idx)
* 功 能:写 ili9320 控制器寄存器地址
* 入口参数:idx 寄存器地址
* 出口参数:无
* 说 明:调用前需先选中控制器,内部函数
* 调用方法:ili9320_WriteIndex(0x0000);
****************************************************************************/
void ili9481_WriteIndex(u16 idx)
{
GPIOB->BRR=RS;//拉低 RS=0
GPIOB->BRR=nCS;//拉低 CS=0

TFT_DATA->ODR=idx;//写指令

GPIOB->BRR=nWR;//拉低 WR=0
GPIOB->BSRR=nWR;//拉高 WR=1
GPIOB->BSRR=nCS;//CS_1;
}

/****************************************************************************
* 名 称:void ili9320_WriteData(u16 dat)
* 功 能:写 ili9320 寄存器数据
* 入口参数:dat 寄存器数据
* 出口参数:无
* 说 明:向控制器指定地址写入数据,调用前需先写寄存器地址,内部函数
* 调用方法:ili9320_WriteData(0x1030)
****************************************************************************/
void ili9481_WriteData(u16 dat)
{
GPIOB->BSRR=RS;//RS=1
GPIOB->BRR=nCS;//CS=0

TFT_DATA->ODR=dat;//写数据

GPIOB->BRR=nWR;//WR=0
GPIOB->BSRR=nWR;//WR=1
GPIOB->BSRR=nCS;//CS=1
}


/****************************************************************************
* 名 称:void ili9481_Delay(vu32 nCount)
* 功 能:延时
* 入口参数:nCount 延时值
* 出口参数:无
* 说 明:
* 调用方法:ili9481Delay(10000);
****************************************************************************/
void ili9481_Delay(vu32 nCount)
{
int i;
for(i=0;i<20000;i++)
for(; nCount != 0; nCount--);

}




/****************************************************************************
* 名 称:void ili9481_Initializtion()
* 功 能:初始化 ILI9481 控制器
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:ili9481_Initializtion();
****************************************************************************/
void ili9481_Initializtion()
{

GPIO_InitTypeDef GPIO_InitStructure;
/* ili9481 总线端口初始化 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 打开设备 TFT_DATA 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // 数据总线,PE0~PE15
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 端口最大速度
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出模式
GPIO_Init(GPIOC, &GPIO_InitStructure); // 初始化 TFT_DATA


/* ili9481控制端口初始化 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 打开设备 GPIOB 时钟
GPIO_InitStructure.GPIO_Pin = nReset|nCS|nWR|RS|nRD; // nReset
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 端口最大速度
GPIO_InitStructure.GPIO_Mod

e = GPIO_Mode_Out_PP; // 推挽输出模式
GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化 GPIOB
GPIO_PinLockConfig(GPIOB,nReset|nCS|nWR|RS|nRD); // 锁定控制端口

/*--------nRD如用不上初始化状态必须置为1-----------*/
GPIO_SetBits( GPIOB, nReset | nCS | nWR | RS | nRD ); // 设置初始状态


ili9481_Reset(); // 复位 ili9481_Reset

//CMO3.5+ILI9481
ili9481_WriteIndex(0x0011);

ili9481_Delay(1000000);
ili9481_WriteIndex(0x0013);

ili9481_WriteIndex(0x00D0);
ili9481_WriteData(0x0007);
ili9481_WriteData(0x0040); //41
ili9481_WriteData(0x001c);//1e


ili9481_WriteIndex(0x00D1);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0018);
ili9481_WriteData(0x001d);

ili9481_WriteIndex(0x00D2);
ili9481_WriteData(0x0001);
ili9481_WriteData(0x0011);//11

ili9481_WriteIndex(0x00C0);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x003B);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0002);
ili9481_WriteData(0x0011);

ili9481_WriteIndex(0x00C1);
ili9481_WriteData(0x0010);
ili9481_WriteData(0x000B);
ili9481_WriteData(0x0088);

ili9481_WriteIndex(0x00C5);
ili9481_WriteData(0x0001);

ili9481_WriteIndex(0x00C8);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0030); //30
ili9481_WriteData(0x0036);
ili9481_WriteData(0x0045);
ili9481_WriteData(0x0004);
ili9481_WriteData(0x0016);
ili9481_WriteData(0x0037);
ili9481_WriteData(0x0075);
ili9481_WriteData(0x0077);
ili9481_WriteData(0x0054);
ili9481_WriteData(0x000f);
ili9481_WriteData(0x0000);

ili9481_WriteIndex(0x00E4);
ili9481_WriteData(0x00A0);

ili9481_WriteIndex(0x00F0);
ili9481_WriteData(0x0001);

ili9481_WriteIndex(0x00F3);
ili9481_WriteData(0x0040);
ili9481_WriteData(0x000A);

ili9481_WriteIndex(0x00F7);
ili9481_WriteData(0x0080);

ili9481_WriteIndex(0x0036);
ili9481_WriteData(0x000a);

ili9481_WriteIndex(0x003A);
ili9481_WriteData(0x0055);





ili9481_WriteIndex(0x002A);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0001);
ili9481_WriteData(0x003F);

ili9481_WriteIndex(0x002B);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0000);
ili9481_WriteData(0x0001);
ili9481_WriteData(0x00df);

ili9481_Delay(1200000);
ili9481_WriteIndex(0x0029);
ili9481_WriteIndex(0x002C);
}

相关文档
最新文档