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);
}
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
用示波器扫一下波形,分析下看看
一直输出255是怎么回事啊 说明SPI控制还有问题 同问,用STM32F3 SPI2 通信不上 有可能是主频太高,建议加些延时,使数据能够稳定的置位或复位 弄好了吗我也是这样的问题 亲,软件SPI有调试成功吗?俺没有{:sad:}QQ:379531604
求教 注意薄幸, 成功了么?楼主! 一直读数是988
465066443 发表于 2019-5-12 22:37
一直读数是988
大佬你对了吗
的速度来看 发表于 2020-5-15 11:18
大佬你对了吗
不敢,我最后换了个封装对了
页:
[1]