LPC 176X 驱动GT20L16 字库
来源:互联网 发布:ubuntu怎么下载输入法 编辑:程序博客网 时间:2024/06/03 21:36
一、GT20L16字库驱动的基本原理
1、原理:
该字库芯片和MCU之间的通信接口为SPI,最高通信速率为10MB/S。
通过汉字的内码,查找该汉字或字符在芯片中对应的位置,然后从对应的其实位置取出点阵字符,然后再在LCD上显示出来,就是我们需要看到的汉字或字符。
(1) LPC1765 SSP0驱动。
引脚定义为: set p1.24 as MOSI0, p1.23 as MISO0, p1.20 as SCK0。 SSEL这个就不用定义,直接用默认的模式就好。
<span style="font-size:18px;"> u8 SSP0_Init(void){ SC->PCONP |= (1 << 21);//打开SSP0的时钟 /* set p1.24 as MOSI0, p1.23 as MISO0, p1.20 as SCK0, P1.21 as GPIO cs*/ PINCON->PINSEL3 |= 0x0003C300; SSP0->CR0 =(0x02 << 8) /* SCR 设置SPI时钟分频 */| (0x00 << 7) /* CPHA 时钟输出相位 */| (0x00 << 6) /* CPOL 时钟输出极性 */ | (0x00 << 4) /* FRF 帧格式 00=SPI */| (0x07 << 0); /* DSS 数据长度,0111=8位 */ SSP0->CR1 = (0x00 << 3) /* SOD 从机输出禁能,0=允许 */| (0x00 << 2) /* MS 主从选择,0=主机,1=从机 */| (0x01 << 1) /* SSE SSP使能 */| (0x00 << 0); /* LBM 回写模式 */ SSP0->CPSR = 0x02; /* 设置SSP从PCLK获得的分频值, */ /* 主模式下有效, 最小值为0x02 */ return( TRUE ); }</span>
特别注意:关于时钟相位和时钟的极性 也需要配置正确,否则通信不正常。根据GT20L16 DS中的描述,下面分别配置为 在传输时SCLK保持低电平。 数据帧在第一个时钟跳变边沿捕获。
<span style="font-size:18px;">/************************************************************************** 函数名称:SPI_Write_Data** 函数功能: ** 入口参数:无** 出口参数:无************************************************************************/void SSP0_Write_Byte(u8 data){ u8 Reg[2]={0x00,0x00}; Reg[0]=data; SSP0_Send_Data(Reg[0]);}/************************************************************************** 函数名称: Send_Byte** 函数功能:通过硬件SPI发送一个字节到MX25L1602** 入口参数:data** 出口参数:无************************************************************************/u8 SSP0_Send_Data(u8 buf){ u32 i=0; uchar dummy; while ((SSP0->SR & 0x02) == 0); /* 等待发送FIFO留出空间 */ SSP0->DR = buf; while ((SSP0->SR & 0x10) == 0x10); /* 等待数据帧发送完毕 */ return ((u8)SSP0->DR);}/************************************************************************** 函数名称:Get_Byte** 函数功能:通过硬件SPI接口接收一个字节到处理器** 入口参数:无** 出口参数:无************************************************************************/void SSP0_Read_NByte_Data(u8 *buf, u32 len){u32 i=0; for(i=0;i<len;i++){ *buf++=SSP0_Send_Data(0XFF); // printf("%02X \r",buf[i]);} return ;// 返回接收到的数据}/************************************************************************** 函数名称:SPI_Write_Data** 函数功能: ** 入口参数:无** 出口参数:无************************************************************************/u8 SSP0_Read_Byte(void){ u8 buf=0; while((SSP0->SR & (SSPSR_BSY|SSPSR_RNE)) != SSPSR_RNE ); buf = SSP0->SR; return buf;}/************************************************************************** 函数名称:r_dat_bat ** 函数功能: 从字库芯片读取字符数据** 入口参数:无3个字节的 芯片地址,连续发送三次** 出口参数:无************************************************************************/u8 r_dat_bat(u32 address,u8 byte_long,u8 *p_arr){unsigned int j=0;CE_LOW;SSP0_Write_Byte(0X03);SSP0_Write_Byte((u8)((address) >> 16));SSP0_Write_Byte((u8)((address) >> 8));SSP0_Write_Byte((u8)(address)); SSP0_Read_NByte_Data(p_arr,byte_long);</span>
<span style="font-size:18px;">CE_HIGH;return p_arr[0];}</span>
1 0
- LPC 176X 驱动GT20L16 字库
- 驱动字库芯片GT23L24M0140
- LPC
- LPC总线之:ISA总线(X-Bus总线)、EISA总线、LPC总线
- 字库
- 我的内核学习笔记7:Intel LPC驱动lpc_ich分析
- LPC-10
- Windows LPC
- LPC入门教程
- LPC 函数
- LPC Communication
- LPC Function
- 详解LPC
- LPC排行榜
- zigbee网关 cc2530终端裸机串行驱动12864(字库ST7920)
- zigbee网关 cc2530终端裸机串行驱动12864(字库ST7920)显示图片
- LPC继承的例子
- lpc单片机使用指南-----序
- 【Android 2d游戏开发(3)】——贪吃蛇(基于surfaceview框架,精讲)
- C++11中的decltype用法注意
- 集合第七发练习之利用ArrayList做栈、队列
- HDU1217——Arbitrage(Floyd)
- 【资源汇集.转】计算机视觉方面的代码
- LPC 176X 驱动GT20L16 字库
- Android 增强版百分比布局库 Eclipse Demo
- 第5周项目游泳池改造
- C#第二次上机
- 解决日常问题之counters.dat
- codeforces 651B Beautiful Paintings
- C++第二次作业
- spring中的setter方法注入
- C++ 实现Windows系统设备枚举