打印

STM32驱动MAX31865的问题

[复制链接]
6764|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用STM32IO口模拟SPI驱动MAX31865调试了好几天了就是没有调通,有没有大神帮帮忙啊?代码如下:
        //===дÊý¾Ý===//
void Send_Write_Byte(u8 Address,u8 Data)
{
    u8 i;
  SPI_MAX31865_CS1_LOW();
    for(i = 0;i < 8;i++)
    {
       SCLK_H;
                        Delay(1);
        if((Address & 0x80) == 0x80)
        {
            MOSI_H;
        }
        else
        {
           MOSI_L;
        }
         SCLK_L;
        Address <<= 1;
    }
    for(i = 0;i < 8;i++)
    {
        SCLK_H;
        if((Data & 0x80) == 0x80)
        {
             MOSI_H;
        }
        else
        {
             MOSI_L;
        }
      SCLK_L;
        Data <<= 1;
    }
   SPI_MAX31865_CS1_HIGH();
}
//====================================================================
//===¶ÁÊý¾Ý===//
u8 Send_Read_Byte(u8 Address)
{
    u8 i,Temp=0;
   SPI_MAX31865_CS1_LOW();
    for(i = 0;i < 8;i++)
    {
        SCLK_H;
        if((Address & 0x80) == 0x80)
        {
            MOSI_H;
        }
        else
        {
            MOSI_L;
        }
    SCLK_L;
        Address <<= 1;
    }
    for(i = 0;i < 8;i++)
    {
        Temp <<= 1;
        SCLK_H;
        if(MISO)
        {
            Temp |= 0x01;
        }
        else
        {
            Temp &= 0xfe;
        }
        SCLK_L;
    }
    SPI_MAX31865_CS1_HIGH();
    return Temp;
}
//====================================================================
//===ͨµÀת»»===//
void max31865_readwedu(void)
{   
        u8 Send_Read_Byte(u8 Address);
    u8 Low=0;
    u8 High=0;
   
    Fault = Send_Read_Byte(0x00);
    High = Send_Read_Byte(0x01);
    Low  = Send_Read_Byte(0x02);
    Temp_Buff = (High << 8) + Low;
    Temp_Buff >>= 1;
    Fault_H[0] = Send_Read_Byte(0x03);
    Fault_H[1] = Send_Read_Byte(0x04);
    Fault_L[0] = Send_Read_Byte(0x05);
    Fault_L[1] = Send_Read_Byte(0x06);
    Error = Send_Read_Byte(0x07);
    Temp_Now = (( Temp_Buff / 32) - 256);
}
//max31865初始化
void SPI_max31865_Init(void)
{
  //SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
  
  /* Enable SPI1 and GPIO clocks */
  /*!< SPI_FLASH_SPI_CS_GPIO, SPI_FLASH_SPI_MOSI_GPIO,
       SPI_FLASH_SPI_MISO_GPIO, SPI_FLASH_SPI_DETECT_GPIO
       and SPI_FLASH_SPI_SCK_GPIO Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC,ENABLE);

  /*!< SPI_FLASH_SPI Periph clock enable */
  //RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);

  
  /*!< Configure SPI_FLASH_SPI pins: SCK */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;//|GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  /*!< Configure SPI_FLASH_SPI pins: MISO */
  //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  //GPIO_Init(GPIOB, &GPIO_InitStructure);

  /*!< Configure SPI_FLASH_SPI pins: MOSI */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;   //MOSI??????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  /*!< Configure SPI_FLASH_SPI_CS_PIN pin: SPI_FLASH Card CS pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
  SPI_MAX31865_CS1_HIGH();
  SPI_MAX31865_CS2_HIGH();
       
        Send_Write_Byte(0x80,0xC1);
}

相关帖子

沙发
1103234376|  楼主 | 2016-1-13 13:13 | 只看该作者

RE: STM32驱动MAX31865的问题

#define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_5)
#define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_5)
#define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_3)
#define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_3)
#define MISO   GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4)
#define SPI_MAX31865_CS1_LOW()     GPIO_ResetBits(GPIOA, GPIO_Pin_15)
#define SPI_MAX31865_CS1_HIGH()    GPIO_SetBits(GPIOA, GPIO_Pin_15)

使用特权

评论回复
板凳
阿南| | 2016-1-14 11:53 | 只看该作者
用示波器扫一下波形,分析下看看

使用特权

评论回复
地板
1103234376|  楼主 | 2016-1-21 15:49 | 只看该作者
阿南 发表于 2016-1-14 11:53
用示波器扫一下波形,分析下看看

一直输出255是怎么回事啊

使用特权

评论回复
5
阿南| | 2016-1-21 17:35 | 只看该作者
说明SPI控制还有问题

使用特权

评论回复
6
lison0103| | 2016-8-19 11:04 | 只看该作者
同问,用STM32F3 SPI2 通信不上

使用特权

评论回复
7
it_yrj| | 2016-8-30 13:39 | 只看该作者
有可能是主频太高,建议加些延时,使数据能够稳定的置位或复位

使用特权

评论回复
8
853524950| | 2017-7-19 14:08 | 只看该作者
弄好了吗  我也是这样的问题

使用特权

评论回复
9
雨夜屋檐下| | 2017-8-20 00:43 | 只看该作者
亲,软件SPI有调试成功吗?俺没有QQ:379531604
求教

使用特权

评论回复
10
山东电子小菜鸟| | 2017-8-28 05:47 | 只看该作者
注意薄幸,

使用特权

评论回复
11
tangzhaowei111| | 2017-12-4 16:35 | 只看该作者
成功了么?楼主!

使用特权

评论回复
12
465066443| | 2019-5-12 22:37 | 只看该作者
一直读数是988

使用特权

评论回复
13
QQ877789857| | 2020-1-15 16:20 | 只看该作者

使用特权

评论回复
14
的速度来看| | 2020-5-15 11:18 | 只看该作者

大佬你对了吗

使用特权

评论回复
15
465066443| | 2020-12-14 14:17 | 只看该作者

不敢,我最后换了个封装对了

使用特权

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

本版积分规则

1

主题

7

帖子

1

粉丝