打印
[STM32F1]

STM32F105 SPI3 发送数据错位

[复制链接]
1306|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天配置了105的SPI3     PA15 PB3\4\5  
配置部分程序       
      GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);      
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);         
        /*W5500_cs*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                                 
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 
       GPIO_Init(GPIOA, &GPIO_InitStructure);                                       
       GPIO_SetBits(GPIOA,GPIO_Pin_15);
       
        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_Low;               
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;               
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;               
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;       
        SPI_InitStructure.SPI_CRCPolynomial = 7;
        SPI_Init(SPI3, &SPI_InitStructure);  
        SPI_Cmd(SPI3, ENABLE);


        但是发送数据错位   我发送数据0x00 0x00 0x04 0x80
        但是我用逻辑分析仪看发送出来的数据有错误为0x01 0x02 0x07 0x80
        不知道各位有没有遇到类似问题的


沙发
Roderman_z| | 2016-2-19 17:06 | 只看该作者
你用示波器测试一下,看看是不是还错位

使用特权

评论回复
板凳
hanbing6092|  楼主 | 2016-2-19 17:18 | 只看该作者
Roderman_z 发表于 2016-2-19 17:06
你用示波器测试一下,看看是不是还错位

只有一个模拟示波器,看不出来

使用特权

评论回复
地板
df_flying| | 2016-2-19 20:04 | 只看该作者
本帖最后由 df_flying 于 2016-2-19 20:05 编辑

多发几个值看看   波形看好像是采样波形偏了一位   CLK常态低,第一个跳变沿采集(你设置的 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;   SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;)好像是上升沿处采集,你点的是下降沿,不知道是不是这个问题,你试试上升沿。如果CLK常低,你想下降沿有效 应该是SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;  第二个跳变沿有效。手册的SPI时许好像有这四个状态图的

QQ图片20160219200522.png (305.82 KB )

QQ图片20160219200522.png

使用特权

评论回复
5
hanbing6092|  楼主 | 2016-2-20 09:16 | 只看该作者
df_flying 发表于 2016-2-19 20:04
多发几个值看看   波形看好像是采样波形偏了一位   CLK常态低,第一个跳变沿采集(你设置的 SPI_InitStruct ...

试过了,第二个下降沿采集数据仍然不对,困扰好几天了    好几种情况都试了

使用特权

评论回复
6
戈卫东| | 2016-2-20 09:32 | 只看该作者
也许是噪音带来的问题?

使用特权

评论回复
7
hanbing6092|  楼主 | 2016-2-20 09:46 | 只看该作者
戈卫东 发表于 2016-2-20 09:32
也许是噪音带来的问题?

额~~~~这个应该不是吧

使用特权

评论回复
8
玄德| | 2016-2-20 12:26 | 只看该作者
本帖最后由 玄德 于 2016-2-20 12:27 编辑


SPI不可能发出这样的波形。
可能没配置好,或者硬件问题。



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

1

粉丝