老古开发网首页
导航:老古开发网首页文章索引索引第2267页文章分类接口电路第5页→[McBSP模块配置为LCD12864的SPI接口]
| -文章搜索 - 最新文章 - |

第1864篇:McBSP模块配置为LCD12864的SPI接口

发布时间:2006年6月27日 点击次数:1465
来源:   作者:
 

void LcdObj::LcdSpiSetup(void)
{
#if (ccsdebug == 0)
/*-----------------------------------------------------------
  硬件McBSP模块配置为SPI接口
实验目的:
  演练硬件McBSP模块配置为SPI接口的应用。
------------------------------------------------------------*/
  McBSP1->SPSA = SPCR1;
  McBSP1->SPSD = 0;
//  McBSP1->SPSD &= ~(1 << SPCR1_RRST);//禁止串口接收
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = SPCR2;
  McBSP1->SPSD = 0;
//  McBSP1->SPSD &= ~(1 << SPCR2_XRST);//禁止串口发送
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = SPCR1;
  McBSP1->SPSD = (0x02 << SPCR1_CLKSTP);//CLKSTP=10b
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = PCR;
  McBSP1->SPSD = (1 << PCR_FSXM)  //设置FSX引脚为输出,控制LCD12864的片选信号SS
               (0 << PCR_FSXP)  //FSX引脚平时输出低电平(LCD12864的片选信号SS无效)
               (1 << PCR_CLKXM) //设置CLKX引脚为输出
               (1 << PCR_CLKXP);//CLKXP引脚平时输出高电平
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = SRGR1;
  McBSP1->SPSD = (0x07 << SRGR1_FWID)   //0x00~0x07~0xff
               (0x80 << SRGR1_CLKGDV);//速率0x80
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = SRGR2;
  McBSP1->SPSD = (1 << SRGR2_CLKSM);//
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = RCR1;
  McBSP1->SPSD = (0x00 << RCR1_RFRLEN1);//8BIT
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = XCR1;//延时等待
  McBSP1->SPSD = (0x00 << XCR1_RFRLEN1);//8BIT
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = RCR2;
  McBSP1->SPSD = (0x02 << RCR2_RDATDLY);//0x01
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = XCR2;
  McBSP1->SPSD = (0x02 << XCR2_RDATDLY);//0x01
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = SPCR2;
  McBSP1->SPSD = (1 << SPCR2_GRST) (1 << SPCR2_XRST) (1 << SPCR2_FRST);
  _delay_loop_(1);//延时等待
#else
/*-----------------------------------------------------------
  硬件McBSP模块配置为普通IO软件模拟SPI时序
实验目的:
  演练硬件McBSP模块配置为普通IO的应用.以备IO紧缺时急用。
------------------------------------------------------------*/
  McBSP1->SPSA = SPCR1;
  McBSP1->SPSD = 0;
  McBSP1->SPSD &= ~(1 << SPCR1_RRST);//禁止串口接收
  McBSP1->SPSA = SPCR2;
  McBSP1->SPSD = 0;
  McBSP1->SPSD &= ~(1 << SPCR2_XRST);//禁止串口发送
  McBSP1->SPSA = PCR;
  McBSP1->SPSD = (1 << PCR_XIOEN) (1 << PCR_RIOEN);//设置收发为IO接口,DX输出,DR,CLKS输入
  McBSP1->SPSD = (1 << PCR_FSXM) (1 << PCR_CLKXM);//设置FSX,CLKX可做IO输出
  McBSP1->SPSD = (1 << PCR_FSRM) (1 << PCR_CLKRM);//设置FSR,CLKR可做IO输出
  McBSP1->SPSD &= ~(1 << PCR_FSXP);//FSX信号=0
  McBSP1->SPSD = (1 << PCR_CLKXP);//CLKX信号=1
  McBSP1->SPSD = (1 << PCR_DX_STAT);//DX信号=1
#endif
}

void LcdObj::LcdSend(unsigned char cData)
{
  cData &= 0xff;
#if (ccsdebug == 0)
  McBSP1->DXR1 = cData;//发送串行数据或命令
  _delay_loop_(1);//延时等待
  McBSP1->SPSA = SPCR2;
  while((McBSP1->SPSD & (1 << SPCR2_XRDY)) == 0) {//等待发送结束
    __nop();
    __nop();
  }
  _delay_loop_(1);//延时等待
#else 
unsigned int i;
  McBSP1->SPSA = PCR;
  for (i = 0; i < 8; i ++) {
    McBSP1->SPSD &= ~(1 << PCR_CLKXP);//CLKX信号=0
    _delay_loop_(1);//延时等待
    if (cData & 0x80) {//MSB最高位为1时
      McBSP1->SPSD = (1 << PCR_DX_STAT);//DX信号=1
 }
 else {
      McBSP1->SPSD &= ~(1 << PCR_DX_STAT);//DX信号=0
 }
 cData <<= 1;
    _delay_loop_(1);//延时等待
    McBSP1->SPSD = (1 << PCR_CLKXP);//CLKX信号=1
    _delay_loop_(1);//延时等待
  } 
  McBSP1->SPSD = (1 << PCR_DX_STAT);//DX信号=1
  _delay_loop_(1);//延时等待
#endif 
}


欢迎进入老古论坛进行讨论
[接口电路] 相关文章:
[摘抄]RS-232、RS-422与RS-485标准及应用
简介:
一、RS-232、RS-422与RS-485的由来  RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于10......

第四代分布式控制系统(DCS)
TMS320VC5416与TLC16C554的接口函数(转帖)
FCI开发出为薄型PCI Express板设计的卡沿接插器
Molex发布针对ATCA Zone 3设计的共面互连设备
 
下一个:[另类其他]智能小区系统特点
简介:
系统特色 1 、 集成 mini-gui ,支持鼠标操作。传统的嵌入式开发, gui 方面一 直是一大难题,一般只能通过 cpu 的几个有限的指令画点、划线、 贴图片等方式来完成 ui 设计。进行 ui 开发费时费力,而且又不美观 ,基本停留在 osd 的层次上......

上一个:[综合电子]本土设备商,别让“小毛病”砸了招牌

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:78毫秒