OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2728|回复: 3

SPI驱动外接设置求助

[复制链接]

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-12-18
在线时间
14 小时
发表于 2017-3-13 21:57:21 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 yjk114 于 2017-3-14 09:28 编辑

如题,我现在用SPI1驱动外接口TLC5618,但是我设置好SPI1后,时钟信号、MOSI口一直没有信号输出(用示波器检测不到脉冲)。我刚学习这一块,琢磨了三个星期没有找到问题,希望各位指点下,谢谢!
对于该程序,我只需要SPI1发送16位数据,而不需要接受,用PB7作为片选信号。具体的SPI程序设置如下:
#include "spi.h"

   void SPI_Init()
  {
                RCC->APB2ENR|=1<<2;        //设置PA时钟
                RCC->APB2ENR|=1<<12;     //设置SPI1时钟
                RCC->APB2ENR|=1<<3;      //设置PB时钟
                //SPI初始化设置
                GPIOA->CRL&=0X0F0FFFFF;    //清除PA5\7位。
                GPIOA->CRL|=0XB0B00000;    //GPIOA.5/7复用
                GPIOA->ODR|=0X5<<5;          //GPIOA.5/7 上拉

                GPIOB->CRL&=0X0FFFFFFF;     //PB.7位清除
                GPIOB->CRL|=0X30000000;      //PB.7位推完输出
                GPIOB->ODR|=1<<7;            //拉高
               
                //spi1的CR寄存器操作
                SPI1->CR1|=0<<15;           //双线双向
                SPI1->CR1|=1<<14;          //发送模式
                SPI1->CR1|=0<<10;              //全双工
                SPI1->CR1|=1<<9;               //软件管理
                SPI1->CR1|=1<<8;               //
               
                SPI1->CR1|=1<<2;               //mosi主设备模式
                SPI1->CR1|=1<<11;              //16位数据
                SPI1->CR1|=1<<1;               //sck空闲状态保持1
                SPI1->CR1|=0<<0;               //下降沿采样
               
                SPI1->CR1|=1<<3;
                SPI1->CR1|=1<<4;
                SPI1->CR1|=1<<5;               //设置256分频
                SPI1->CR1|=0<<7;               //MBS高位发送
                SPI1->CR1|=1<<6;               //使能spi1
  }
        
u16 SPI1_ReadWriteByte(u16 TxData)
{               
        u16 retry=0;                                 
        while((SPI1->SR&1<<1)==0)
        {
                retry++;
                if(retry>0XFFFE)return 0;
        }                          
        SPI1->DR=TxData;                  
        retry=0;
}


主程序:当检测到按下按钮时并放开按钮时,片选拉低,延时发送数据,延时,片选拉高,然后闪灯。
#include "sys.h"         
#include "delay.h"        
#include "led.h"
#include "key.h"
#include "spi.h"

int main(void)
{               
  u16 retry;        
        Stm32_Clock_Init(9);      
        delay_init(72);                  
        LED_Init();                          
        KEY_Init();
        SPI_Init();
        while(1)
        {
                if(KEY0==0)
                {               
                  delay_ms(10);
                  if(KEY0==0)
      {                  
                          LED0=0;
                   delay_ms(100);                        
                        }        
                        if(KEY0==1)      //按键放开
                  {
                         LED0=1;          //LED亮
                         CS0=0;           //片选拉低
                         delay_ms(50);  //延时
                         SPI1_ReadWriteByte(0X8100);   //发送数据
                         delay_ms(50);   //延时
                         CS0=1;            //片选拉高
                         LED0=0;   
                        delay_ms(300);
                         LED0=1;
                         delay_ms(300);   //闪灯
                        }
                }
        }         
}



补充内容 (2017-3-22 12:05):
程序已经调试成功,最后我发现是我示波器没有设置好,导致没有时钟信号、数据信号。现在可一了。谢谢各位

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-12-18
在线时间
14 小时
 楼主| 发表于 2017-3-14 10:54:39 来自手机 | 显示全部楼层
自己沙发,各位知道下啊,急啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-15 21:20:17 | 显示全部楼层
帮顶
回复

使用道具 举报

3

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2012-8-23
在线时间
4 小时
发表于 2017-3-16 11:50:22 | 显示全部楼层
spi的配置有源码的,按照源码仔细配置一下,注意引脚要对应,spi的模式要和从机对应等问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-23 06:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表