打印
[STM32L1]

STM32L151芯片SPI无时钟输出

[复制链接]
4490|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
allenchenhh|  楼主 | 2014-7-16 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 allenchenhh 于 2014-7-16 16:12 编辑

想要做的事点亮LCD,接口是SPI ,现在看SPI时钟没有输出,应该是初始化的问题,找了一圈没有答案。附上SPI初始化代码,请指教。
void SetupSPI(void)
{
                SPI_InitTypeDef  SPI_InitStructure;   
                GPIO_InitTypeDef GPIO_InitStructure;
               

                //enable spi clock
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
               
                //enable gpio clock
                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOA,ENABLE);
               
               
                //connect gpio to LCD
                GPIO_PinAFConfig(GPIOB, GPIO_PinSource3,GPIO_AF_SPI1);
                GPIO_PinAFConfig(GPIOB, GPIO_PinSource4,GPIO_AF_SPI1);
                GPIO_PinAFConfig(GPIOB, GPIO_PinSource5,GPIO_AF_SPI1);
                GPIO_PinAFConfig(GPIOA, GPIO_PinSource12,GPIO_AF_SPI1);
                GPIO_PinAFConfig(GPIOA, GPIO_PinSource15,GPIO_AF_SPI1);
               
             /*配置PB3、PB4和PB5,分别对应于CLK、SDA和数据命令选择信号*/
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;   
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;   
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;               
                GPIO_Init(GPIOB, &GPIO_InitStructure);
               
               
               
                //配置PA15和PA12,作为片选信号和复位信号
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15 | GPIO_Pin_12;   
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;   
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;               
                GPIO_Init(GPIOA, &GPIO_InitStructure);



                //SPI1配置
                SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;
                SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
                SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
                SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
                SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
                SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
                SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
                SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
                SPI_InitStructure.SPI_CRCPolynomial =7; //CRC7
               
        
               
                SPI_Init(SPI1, &SPI_InitStructure);
               
                SPI_Cmd(SPI1, ENABLE);  
}

沙发
mmuuss586| | 2014-7-16 18:54 | 只看该作者
下面是我F1的初始化程序,你看下;
你的程序没看出啥问题,先改下IO管脚配置部分看看;
void SPI1_Init(void)       
{
        /* Private variables ---------------------------------------------------------*/
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1|RCC_APB2Periph_GPIOA, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//È«Ë«¹¤
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//Ö÷»úģʽ
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8λÊý¾Ýģʽ
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//¿ÕÏÐģʽÏÂSCKΪ1
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//Êý¾Ý²ÉÑù´ÓµÚ2¸öʱ¼ä±ßÑØ¿ªÊ¼
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//NSSÈí¼þ¹ÜÀí
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;//²¨ÌØÂÊ,4MʱÖÓ
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//´ó¶Ëģʽ
        SPI_InitStructure.SPI_CRCPolynomial = 7;//CRC¶àÏîʽ         
        SPI_Init(SPI1,&SPI_InitStructure);
        SPI_Cmd(SPI1, ENABLE);
}

使用特权

评论回复
板凳
allenchenhh|  楼主 | 2014-7-17 09:32 | 只看该作者
用示波器测了都时钟和数据都是对的,但就是一直点不亮,不知怎么搞了

使用特权

评论回复
地板
allenchenhh|  楼主 | 2014-7-18 11:46 | 只看该作者
怎么又来这个?分数分配错误,怎么结贴?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

44

帖子

1

粉丝