mustang

mustang

0个粉丝

7

问答

0

专栏

2

资料

mustang  发布于  2014-05-07 11:01:18
采纳率 0%
7个问答
5537

stm32f030 驱动 si4464 spi问题

 
[code]void SPI_GPIO_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStruct;
        //Enable Clock

       
          /*!< Configure SD_SPI pins: SCK */
  GPIO_InitStruct.GPIO_Pin = SI4464_SCK_PIN;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_Init(SI4464_SCK_PORT, &GPIO_InitStruct);
        /*!< Configure SD_SPI pins: MISO */
  GPIO_InitStruct.GPIO_Pin = SI4464_MISO_PIN;
  GPIO_Init(SI4464_MISO_PORT, &GPIO_InitStruct);
       
/*!< Configure SD_SPI pins: MOSI */
  GPIO_InitStruct.GPIO_Pin =SI4464_MOSI_PIN;
  GPIO_Init(SI4464_MOSI_PORT, &GPIO_InitStruct);
/* Connect PXx to SD_SPI_SCK */
  GPIO_PinAFConfig(SI4464_SCK_PORT, SI4464_SCK_SOURCE, SI4464_SCK_AF);
  /* Connect PXx to SD_SPI_MISO */
  GPIO_PinAFConfig(SI4464_MISO_PORT, SI4464_MISO_SOURCE, SI4464_MISO_AF);
  /* Connect PXx to SD_SPI_MOSI */
  GPIO_PinAFConfig(SI4464_MOSI_PORT, SI4464_MOSI_SOURCE, SI4464_MOSI_AF);
       
/*!< Configure SD_SPI_CS_PIN pin: SD Card CS pin */
//
  GPIO_InitStruct.GPIO_Pin =SI4464_CS_PIN;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
  GPIO_Init(SI4464_CS_PORT, &GPIO_InitStruct);
}[/code]

上面是SPI 的配置

这是SPI的初始化。

void SPI_init()
{
  SPI_InitTypeDef   SPI_InitStruct;
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA| RCC_AHBPeriph_GPIOB, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
  SPI_Cmd(SPI1, DISABLE);
  /*!< SD_SPI Config */
  SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
  SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
  SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStruct.SPI_CRCPolynomial = 7;
  SPI_Init(SPI1, &SPI_InitStruct);
// SPI_RxFIFOThresholdConfig(SPI2, SPI_RxFIFOThreshold_QF);
  SPI_Cmd(SPI1, ENABLE); /*!< SD_SPI enable */
}

上面配置有什么问题么?
下面这个函数就出问题了,一致判断  if ((SPIx->SR & SPI_I2S_FLAG) != (uint16_t)RESET)  无法得到set的值。
[code]FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG)
{
  FlagStatus bitstatus = RESET;
  /* Check the parameters */
  assert_param(IS_SPI_ALL_PERIPH(SPIx));
  assert_param(IS_SPI_I2S_GET_FLAG(SPI_I2S_FLAG));

  /* Check the status of the specified SPI flag */
  if ((SPIx->SR & SPI_I2S_FLAG) != (uint16_t)RESET)
  {
    /* SPI_I2S_FLAG is set */
    bitstatus = SET;
  }
  else
  {
    /* SPI_I2S_FLAG is reset */
    bitstatus = RESET;
  }
  /* Return the SPI_I2S_FLAG status */
  return  bitstatus;
}[/code]
继续debug.
我来回答
回答1个
时间排序
认可量排序

mustang

0个粉丝

7

问答

0

专栏

2

资料

mustang 2014-05-07 11:55:47
认可0
SPI_I2S_FLAG  就是  SPI_I2S_FLAG_TXE  对应SPI -SR 寄存器的 bit1  判断TX buffer 是否为空。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区