wxh0000mm 发表于 2014-12-17 08:57:57

用示波器看看你的管脚信号对不对!

wenzh00808ongzi 发表于 2014-12-17 11:10:14

Dylan疾风闪电 发表于 2014-12-16 18:22
读不到数据的时候,检查一下这些因素:
1.从设备的时序:SPI_CPOL 和 SPI_CPHA。
2.通讯速率,有的时候需要 ...

从设备的时序图已经贴上,sclk波形正常,miso.mosi没有波形。是不是spi配置有什么问题?但是实在是找不出哪里有问题?附带原理图。

发表于 2014-12-17 11:24:59

总线上有数据在发送吗?SPI接收不到?

Dylan疾风闪电 发表于 2014-12-17 16:08:30

主模式的情况下,GPIO端口的配置如下:
SPIx_SCK    推挽复用输出
SPIx_MOSI推挽复用输出
SPIx_MISO浮空输入或带上拉输入
-----------------------------------------------------------
你的MOSI引脚没波形,那么配置或者硬件肯定存在问题的。再怎么说,SCK和MOSI都是由MCU主控的。

Dylan疾风闪电 发表于 2014-12-19 08:21:47

本帖最后由 Dylan疾风闪电 于 2014-12-19 08:27 编辑

/*附上GPIO配置,仅作参考。SPLIT_DEFINE_PIN、SPLIT_DEFINE_PORT、SetAF_SPI1_SCK是宏定义,等效于类似GPIO_Pin_5、GPIOA、GPIO_PinAFConfig(..,..)不用深入。*/

//SPIx_SCK 主模式 推挽复用输出
        //SPIx_MOSI 全双工模式/主模式 推挽复用输出
        //SPIx_MISO 全双工模式/主模式 浮空输入或带上拉输入
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(X2_CLK);
        GPIO_Init(SPLIT_DEFINE_PORT(X2_CLK), &GPIO_InitStructure);
        SetAF_SPI1_SCK;
       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(X2_SDI);
        GPIO_Init(SPLIT_DEFINE_PORT(X2_SDI), &GPIO_InitStructure);
        SetAF_SPI1_MOSI;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Pin = SPLIT_DEFINE_PIN(X2_SDO);
        GPIO_Init(SPLIT_DEFINE_PORT(X2_SDO), &GPIO_InitStructure);
        SetAF_SPI1_MISO;

wenzh00808ongzi 发表于 2014-12-19 18:29:57

Dylan疾风闪电 发表于 2014-12-19 08:21
/*附上GPIO配置,仅作参考。SPLIT_DEFINE_PIN、SPLIT_DEFINE_PORT、SetAF_SPI1_SCK

我忽然发现我spi配置的是正确的,我用逻辑分析仪发送数据已经读出,从设备就是没有回应,连clk都没有,我再研究研究,电路图,芯片数据手册。:)

Dylan疾风闪电 发表于 2014-12-20 09:31:54

spi_clk是主设备产生的。从设备只会在spi_miso这一个引脚输出信号。

奔跑小蜗牛 发表于 2014-12-20 09:59:58

读数据是从设备往主设备发数据,从设备操作总线,你是不是引脚状态没有配置好,stm32一直占用着总线,或者推挽输出,导致从设备不能正常的拉低拉高总线,那stm32就读不到数据了。找个示波器或者逻辑分析仪跟踪下通讯波形,不就一目了然了

wenzh00808ongzi 发表于 2014-12-29 09:35:33

奔跑小蜗牛 发表于 2014-12-20 09:59
读数据是从设备往主设备发数据,从设备操作总线,你是不是引脚状态没有配置好,stm32一直占用着总线,或者 ...

最近比较忙,居然忘了,我又发现一个问题,就是spi只能第二次能读取到数据,其余全是0,但是波形上是能看到数据的 ,这个是为何?
页: 1 [2]
查看完整版本: STM32 F030 SPI