你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
MrJiu 发表于 2018-4-13 11:33 软件CS?CS无效的时候,随便你发数据,从机是不会理会这些数据的,我看了半天不懂你想表达什么意思? ...
dataozi 发表于 2018-4-13 12:01 先看看你使用的传感器的手册,不一定要通过0xff发送数据,
watercici 发表于 2018-4-13 11:23 抓取的图是这样的
toofree 发表于 2018-4-14 23:03 这个图不大对呀,看一下实际SPI时钟是多少频率的?你设置的SPI时钟预期是多少频率? 你的4M时钟 够不够呢 ...
这是我的初始化函数
void SPI2_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable SPI2 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_GPIOB , ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
/*!< SPI_FLASH_SPI Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
/*!< Configure SPI_FLASH_SPI pins: SCK PB13*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*-------------------MISO PB14----------------*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*!< Configure SPI_FLASH_SPI pins: MOSI PB15*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*----------SPI2_EEPROM_CS-----------------------*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
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_4;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
/* Enable SPI2 */
SPI_Cmd(SPI2, ENABLE);
SPI_I2S_SendData(SPI2,0xff);
/* Deselect the FLASH: Chip Select high */
SPI2_Flash_CS_HIGH();
}
这是发送函数
void SPI2_Flash_SendByte(u8 dat)
{
SPI_I2S_SendData(SPI2,dat);
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
}
现在就是发送的时候时钟不对,
评分
查看全部评分
我粘贴了程序,和逻辑分析仪的抓取结果,逻辑分析仪上CS拉低了,可是时钟和数据都不对,想让大家帮忙看看是真么回事
评分
查看全部评分
传感器手册?我没有传感器,我用的是W25Q16的FLASH芯片
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
这个图不大对呀,看一下实际SPI时钟是多少频率的?你设置的SPI时钟预期是多少频率?
你的4M时钟 够不够呢?要不你把SPI时钟分频降低一点,试试SPI_BaudRatePrescaler_256
评分
查看全部评分
谢谢,这个问题就是时钟的问题,后来改成256就可以了,谢谢!
评分
查看全部评分