1103234376 发表于 2016-1-13 13:11

STM32驱动MAX31865的问题

用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 = Send_Read_Byte(0x03);
    Fault_H = Send_Read_Byte(0x04);
    Fault_L = Send_Read_Byte(0x05);
    Fault_L = Send_Read_Byte(0x06);
    Error = Send_Read_Byte(0x07);
    Temp_Now = (( Temp_Buff / 32) - 256);
}
//max31865初始化
void SPI_max31865_Init(void)
{
//SPI_InitTypeDefSPI_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是怎么回事啊

阿南 发表于 2016-1-21 17:35

说明SPI控制还有问题

lison0103 发表于 2016-8-19 11:04

同问,用STM32F3 SPI2 通信不上

it_yrj 发表于 2016-8-30 13:39

有可能是主频太高,建议加些延时,使数据能够稳定的置位或复位

853524950 发表于 2017-7-19 14:08

弄好了吗我也是这样的问题

雨夜屋檐下 发表于 2017-8-20 00:43

亲,软件SPI有调试成功吗?俺没有{:sad:}QQ:379531604
求教

山东电子小菜鸟 发表于 2017-8-28 05:47

注意薄幸,

tangzhaowei111 发表于 2017-12-4 16:35

成功了么?楼主!

465066443 发表于 2019-5-12 22:37

一直读数是988

QQ877789857 发表于 2020-1-15 16:20


的速度来看 发表于 2020-5-15 11:18

465066443 发表于 2019-5-12 22:37
一直读数是988

大佬你对了吗

465066443 发表于 2020-12-14 14:17

的速度来看 发表于 2020-5-15 11:18
大佬你对了吗

不敢,我最后换了个封装对了
页: [1]
查看完整版本: STM32驱动MAX31865的问题