[微控制器/MCU] 请大神帮忙看看LPC1114 SPI0配置,芯片无输出信号

[复制链接]
 楼主| 青空之狼 发表于 2016-5-27 11:23 | 显示全部楼层 |阅读模式
  1. void SPI0_Init(void)
  2. {
  3.         uint8_t i,Clear=Clear;//Clear=Clear:用这种语句形式解决编译产生的Waring:never used!       

  4.         LPC_SYSCON->PRESETCTRL |= (0x1<<0);           //禁止LPC_SSP0复位
  5.         LPC_SYSCON->SYSAHBCLKCTRL |= (0x1<<11);//允许LPC_SSP0时钟 bit11
  6.         LPC_SYSCON->SSP0CLKDIV = 0x01;                   //分频系数为1,使SPI0速率最大:48Mhz
  7.         LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟(bit16)
  8.         LPC_IOCON->SCK_LOC = 0x02;      //把SCK0复用到PIO0_6引脚
  9.         LPC_IOCON->PIO0_6 &= ~0x07;
  10.         LPC_IOCON->PIO0_6 |= 0x02;                //把PIO0_6设置为SSP CLK
  11.         LPC_IOCON->PIO0_8 &= ~0x07;       
  12.         LPC_IOCON->PIO0_8 |= 0x01;                //把PIO0_8设置为SSP MISO
  13.         LPC_IOCON->PIO0_9 &= ~0x07;       
  14.         LPC_IOCON->PIO0_9 |= 0x01;                //把PIO0_9设置为SSP MOSI
  15.         LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟(bit16)
  16.         // 8位数据传输,SPI模式, CPOL = 0, CPHA = 0,空闲时CLK为0,第一个上升沿采集数据,SCR = 0
  17.         LPC_SSP0->CR0 = 0x0007;            
  18.         // 预分频值(注意:必须为偶数 2~254)
  19.         LPC_SSP0->CPSR = 0x02;
  20.         LPC_SSP0->CR1 &= ~(1<<0);//LBM=0:正常模式
  21.         LPC_SSP0->CR1 &= ~(1<<2);//MS=0:主机模式
  22.         LPC_SSP0->CR1 |=  (1<<1);//SSE=1:使能SPI0
  23.         //清空RxFIFO,LPC1114收发均有8帧FIFO,每帧可放置4~16位数据
  24.         for ( i = 0; i < 8; i++ )
  25.         {
  26.                   Clear = LPC_SSP0->DR;//读数据寄存器DR将清空RxFIFO
  27.         }                                    
  28. }

  1. /*****************************************/
  2. /* 函数功能:SPI0通信                    */
  3. /* 说明:    发送一个字节,接收一个字节  */
  4. /*****************************************/
  5. uint8_t SPI0_communication(uint8_t TxData)
  6. {               
  7.         while((LPC_SSP0->SR)&(1<<4));//忙时等待,SR状态寄存器bit4 BSY:忙时为1
  8.         LPC_SSP0->DR = TxData;                 //把要发送的数写入TxFIFO
  9.         while(!((LPC_SSP0->SR)&(1<<2)));//等待接收完,SR状态寄存器bit2 RNE:接收FIFO非空为1
  10.         return(LPC_SSP0->DR);                               //返回收到的数据
  11. }

  1. #include "LPC11xx.h"
  2. #include "ssp.h"
  3. #include "systick.h"
  4. #define LED_ON  LPC_GPIO0->DATA |= (1<<7)
  5. #define LED_OFF LPC_GPIO0->DATA &= ~(1<<7)
  6. /***************************************/
  7. /*函数名称:延时函数*
  8. * ************************************/
  9. void delay(){
  10.         uint16_t i,j;
  11.         for(i=0;i<5000;i++)
  12.                 for(j=0;j<200;j++); }
  13. /**************************************/
  14. //函数名称:LED灯初始化
  15. /**************************************/
  16. void led_init(){
  17.   LPC_GPIO0->DIR |= (1<<7);//把P0.7设置为输出引脚
  18.   LPC_GPIO0->DATA &=~(1<<7);//把P0.7设置为低电平
  19. }
  20. int main(void) {
  21.         SysTick_Config(SystemCoreClock/1000); // 间隔1ms进入SYSTICK中断
  22.         SSP0_Init();
  23.     led_init();
  24.     while(1) {
  25.             LED_ON;
  26.             delay();
  27.             LED_OFF;
  28.             delay();
  29.             SPI0_communication(0x88);
  30.     }
  31.     return 0 ;
  32. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部