OpenEdv-开源电子网

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

max31865 SPI通信失败

[复制链接]

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
发表于 2016-8-23 17:13:06 | 显示全部楼层 |阅读模式
20金钱
使用stm32f302读写MAX31865,初始化,无法读出数据,都是0xff。
尝试使用硬件SPI和GPIO模拟SPI,都无法读出。
感觉就是读写SPI,但是不知道为什么就不行。
有用示波器去量波形,感觉没什么问题。
有人使用过这个芯片吗?谢谢!

下面是代码:
u8 SPI_MAX31865_Init(void)
{
  
    SPI_InitTypeDef  SPI_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
   
    RCC_APB1PeriphClockCmd(SPI_MAX31865_SPI_CLK, ENABLE);
   
    RCC_AHBPeriphClockCmd(SPI_MAX31865_SPI_MOSI_GPIO_CLK | SPI_MAX31865_SPI_MISO_GPIO_CLK |
                          SPI_MAX31865_SPI_SCK_GPIO_CLK,  ENABLE);
   
    RCC_APB1PeriphClockCmd(SPI_MAX31865_CS_GPIO_CLK, ENABLE);   
   
    /*!< Configure SPI_MAX31865_SPI_CS_PIN pin: SPI_MAX31865 Card CS pin */
    GPIO_InitStructure.GPIO_Pin = SPI_MAX31865_CS_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_Init(SPI_MAX31865_CS_GPIO_PORT, &GPIO_InitStructure);
    /* Deselect the MAX31865: Chip Select high */
    SPI_MAX31865_CS_HIGH();
   
    /*!< Configure SPI_MAX31865_SPI pins: SCK */   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
   
    /*!< Configure SPI_MAX31865_SPI pins: SCK */
    GPIO_InitStructure.GPIO_Pin = SPI_MAX31865_SPI_SCK_PIN;
    GPIO_Init(SPI_MAX31865_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
   
    /*!< Configure SPI_MAX31865_SPI pins: MISO */
    GPIO_InitStructure.GPIO_Pin = SPI_MAX31865_SPI_MISO_PIN;
    GPIO_Init(SPI_MAX31865_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
   
    /*!< Configure SPI_MAX31865_SPI pins: MOSI */
    GPIO_InitStructure.GPIO_Pin = SPI_MAX31865_SPI_MOSI_PIN;
    GPIO_Init(SPI_MAX31865_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
         
   
    /* Configure DRDS */
    RCC_AHBPeriphClockCmd(SPI_MAX31865_DR_GPIO_CLK, ENABLE);
   
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;   
    GPIO_InitStructure.GPIO_Pin = SPI_MAX31865_DR_PIN;
    GPIO_Init(SPI_MAX31865_DR_GPIO_PORT, &GPIO_InitStructure);
   
   
    GPIO_PinAFConfig(SPI_MAX31865_SPI_SCK_GPIO_PORT, SPI_MAX31865_SPI_SCK_SOURCE, GPIO_AF_5);
    GPIO_PinAFConfig(SPI_MAX31865_SPI_MISO_GPIO_PORT, SPI_MAX31865_SPI_MISO_SOURCE, GPIO_AF_5);
    GPIO_PinAFConfig(SPI_MAX31865_SPI_MOSI_GPIO_PORT, SPI_MAX31865_SPI_MOSI_SOURCE, GPIO_AF_5);   
   
   
    /* SPI2 configuration */
    /* SPI ADS1118: data input on the DIO pin is sampled on the rising edge of the CLK.
    Data on the DO and DIO pins are clocked out on the falling edge of CLK.*/
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;      
    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_256;         
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                                            
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPI_MAX31865_SPI, &SPI_InitStructure);
    SPI_RxFIFOThresholdConfig(SPI_MAX31865_SPI, SPI_RxFIFOThreshold_QF);
   
    /* Enable SPI1  */
    SPI_Cmd(SPI_MAX31865_SPI, ENABLE);
   
    /* wait for MAX31865 to set up */
    delay_ms(200);
   
    u8 read_value = 0;
    while(read_value != 0xc2)
    {
        SPI_MAX31865_Write( 0x80,0xc2 );
        
        delay_us(50);
        
        read_value = SPI_MAX31865_Read(0x00);
        
        delay_ms(10);
        
    }
   
    return 1;
}

uint8_t sEE_SendByte(uint8_t value)
{
  /*!< Loop while DR register in not empty */
  while (SPI_I2S_GetFlagStatus(SPI_MAX31865_SPI, SPI_I2S_FLAG_TXE) == RESET);
  /*!< Send byte through the SPI peripheral */
  SPI_SendData8(SPI_MAX31865_SPI, value);
  
  /*!< Wait to receive a byte */
  while (SPI_I2S_GetFlagStatus(SPI_MAX31865_SPI, SPI_I2S_FLAG_RXNE) == RESET);
  /*!< Return the byte read from the SPI bus */
  return SPI_ReceiveData8(SPI_MAX31865_SPI);
}
void SPI_MAX31865_Write(u8 address, u8 value)         
{
    SPI_MAX31865_CS_LOW();   
    sEE_SendByte(address);                  
    sEE_SendByte(value);
    SPI_MAX31865_CS_HIGH();
}
uint8_t SPI_MAX31865_Read(u8 address)         
{
    u8 value = 0;
   
    SPI_MAX31865_CS_LOW();  
    sEE_SendByte(address);                  
    value = sEE_SendByte(0x00);   
    SPI_MAX31865_CS_HIGH();
   
    return value;
}

最佳答案

查看完整内容[请看2#楼]

最好发现是硬件问题。。。
活着才是王道!健康是一切的前提!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
 楼主| 发表于 2016-8-23 17:13:07 | 显示全部楼层
最好发现是硬件问题。。。
活着才是王道!健康是一切的前提!
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
 楼主| 发表于 2016-8-24 08:18:10 | 显示全部楼层
顶一下,有人用过吗?
活着才是王道!健康是一切的前提!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-8-24 20:18:23 | 显示全部楼层
没用过,帮顶
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-12-20
在线时间
3 小时
发表于 2016-12-20 20:35:05 | 显示全部楼层
我今天调通这个东东了,明天换的优化下,顺便把故障检测也做了,完全看手册敲的代码啊,
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2016-12-20
在线时间
3 小时
发表于 2016-12-20 20:36:59 | 显示全部楼层
顺便问下楼主,读出来的温度怎么知道和真实值差多少?反正现在感觉数值差不多,但究竟差了0.几度,就不知道了
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-2-23
在线时间
28 小时
发表于 2017-12-2 15:15:38 | 显示全部楼层
sin88 发表于 2016-12-20 20:35
我今天调通这个东东了,明天换的优化下,顺便把故障检测也做了,完全看手册敲的代码啊,

你好,我也在搞这个,请问可以分享下吗。。不胜感激,谢谢
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2017-12-7
在线时间
40 小时
发表于 2018-3-20 21:25:02 | 显示全部楼层
我现在在搞这个,几天了也没能调通,楼主可以分享一下工程代码吗?qq邮箱:1056859583@qq.com
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
 楼主| 发表于 2018-3-21 14:15:35 | 显示全部楼层
oceane 发表于 2018-3-20 21:25
我现在在搞这个,几天了也没能调通,楼主可以分享一下工程代码吗?qq邮箱:

代码我也找不到了,在以前公司做的。

和其他SPI设备一样,调通SPI通信就可以了。

其他按照手册上的寄存器读写。
活着才是王道!健康是一切的前提!
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-4-19
在线时间
4 小时
发表于 2018-4-20 08:45:47 | 显示全部楼层
lison0103 发表于 2018-3-21 14:15
代码我也找不到了,在以前公司做的。

和其他SPI设备一样,调通SPI通信就可以了。

我也遇到这个问题了,读取RTD一直返回FFFF,楼主是什么原因,怎么解决的?
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-2-23
在线时间
28 小时
发表于 2018-4-26 11:41:42 | 显示全部楼层
sin88 发表于 2016-12-20 20:36
顺便问下楼主,读出来的温度怎么知道和真实值差多少?反正现在感觉数值差不多,但究竟差了0.几度,就不知道 ...

亲,您好,我的代码有问题,经常出现故障,可否让我参考一下您的代码,看看我哪里出现了问题,不胜感激啊,谢谢!qq邮箱:761124311@qq.com
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-2-23
在线时间
28 小时
发表于 2018-4-26 11:42:56 | 显示全部楼层
lison0103 发表于 2018-3-21 14:15
代码我也找不到了,在以前公司做的。

和其他SPI设备一样,调通SPI通信就可以了。

亲,可否让我参考下,我的一直有问题。麻烦你了谢谢,qq邮箱:761124311@qq.com
回复

使用道具 举报

2

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-2-23
在线时间
28 小时
发表于 2018-4-26 11:43:45 | 显示全部楼层
翌晨 发表于 2018-4-20 08:45
我也遇到这个问题了,读取RTD一直返回FFFF,楼主是什么原因,怎么解决的?

请问你的调出来了吗。可否参考一下,谢谢。QQ邮箱:761124311@qq.com
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-4-2
在线时间
19 小时
发表于 2018-5-25 08:11:56 | 显示全部楼层
MAX31865的代码可以传我看下吗 QQ707469161  我读出来读是oxff  有报警   高限报警 不知道什么情况
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2019-1-26
在线时间
24 小时
发表于 2019-5-31 12:40:54 | 显示全部楼层
我挑的也不行,有人分享我一下代码吗?
回复

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2019-1-26
在线时间
24 小时
发表于 2019-5-31 12:41:18 | 显示全部楼层
楼主是怎么解决的,我的和你一样的问题
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-4-10
在线时间
0 小时
发表于 2020-4-10 18:05:58 | 显示全部楼层
sin88 发表于 2016-12-20 20:35
我今天调通这个东东了,明天换的优化下,顺便把故障检测也做了,完全看手册敲的代码啊,

使用Max31865的SPI通讯一样遇到问题,请问可以分享下之后怎么解决的吗
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-9-10
在线时间
2 小时
发表于 2021-9-12 19:48:28 | 显示全部楼层
有人用hal库的SPI实现的吗我读的值一直不会变,,,
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 23:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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