3661
- 收藏
- 点赞
- 分享
- 举报
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.
{
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个
时间排序
认可量排序
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
相关问答
-
2014-05-14 09:00:18
-
2014-05-28 21:35:37
-
2014-05-15 09:36:34
-
2014-05-07 10:54:43
-
2014-05-09 09:21:05
-
2018-12-01 10:59:55
-
2014-05-06 13:15:21
-
2013-08-25 13:12:44
-
2013-12-07 14:49:27
-
2014-05-06 10:27:39
-
2018-12-11 09:02:19
-
2013-08-25 13:14:46
-
2013-12-05 21:59:30
-
2013-08-27 17:37:11
-
2010-06-01 23:11:38
-
2013-11-20 20:19:01
-
2018-12-13 09:41:54
-
2013-11-20 20:13:23
-
2013-11-29 22:23:19
无更多相似问答 去提问

点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认