打印
[STM32F1]

这个关于两片STM32spi通信的,我调不出来。拜托朋友们帮忙看看

[复制链接]
2222|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
970253146|  楼主 | 2015-6-6 01:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在学STM32的SPI,就想自己用两点STM32一主一从让他俩交换一个字节的数据。配置好之后,接上逻辑分析仪,发现主机的波形跟时钟都是正确的。但主机收到从机返回来的那个值是错的。我这的程序很简单
主机:1RCC配置2GPIO配置3SPI配置(master模式)然后就SPI1-ReadWrite (0xff)
从机:1RCC配置2GPIO配置3SPI配置(Slaver模式),然后就直接SPI1-DR=0x32;
因为我看资料上说从机DR寄存器装好值后,主机来时钟,通信就会自动开始的。因此从机这我直接给DR丢个值进去。后来我又将从机的这个SPI1-DR=0x32改成了跟主机一样的SPI1-ReadWrite (0x32),但还是不行。请问我这是错在哪里了啊?我是自学的,刚学了没多久,看不出来啊。我倒是觉得按我的理解是没错的。给各位添麻烦了,谢谢你们了
沙发
970253146|  楼主 | 2015-6-6 01:42 | 只看该作者
程序也贴上来了

master.jpg (320.17 KB )

master.jpg

slave.jpg (322.49 KB )

slave.jpg

read.jpg (63.87 KB )

read.jpg

使用特权

评论回复
板凳
mmuuss586| | 2015-6-6 11:09 | 只看该作者
这样读不对吧;
看你上面的程序,只要执行了READ函数都会发送数据;

最好改成中断处理;

使用特权

评论回复
地板
mmuuss586| | 2015-6-6 11:09 | 只看该作者
/*******************************************************************************
* 函数名称: SPI2_IRQHandler()
* 功能描述: SPI2中断处理函数
* 输入参数: void
* 返回参数: 无
* 说    明:

********************************************************************************/
void SPI2_IRQHandler(void)
{   

    if( SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_TXE) == SET )
    {
        SPI_SendData8(SPI2,0xFF);      
    }
    if( SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) == SET )   
    {     
       SPI_Value = SPI_ReceiveData8(SPI2);   
    }
                 
    if(SPI_Value ==0x01)
           {           
       printf("主机STM32F103VCT6开发板连接成功!\r\n");                       
     }
     if(SPI_Value ==0x02)
     {   
                         
                          printf("我是STM32F302-NUCLEO开发板!\r\n");                          
                                             
     }         
     if(SPI_Value ==0x03)
           {                 
        printf("我在休息,随时可以干活!\r\n");                               
     }
     if(SPI_Value ==0x04)
     {   
                                                                     
     }       

}

使用特权

评论回复
5
mmuuss586| | 2015-6-6 11:11 | 只看该作者
F1-SPI-主.rar (291.14 KB)

F3-NUCLEO-SPI-从.rar (385.43 KB)

使用特权

评论回复
6
pkkkkp| | 2015-6-7 12:44 | 只看该作者
:handshake

使用特权

评论回复
7
970253146|  楼主 | 2015-6-7 17:59 | 只看该作者
mmuuss586 发表于 2015-6-6 11:09
这样读不对吧;
看你上面的程序,只要执行了READ函数都会发送数据;

大哥你好。我这里是想主机发送一个数据给从机然后从机也给返回一个给主机。所以主机的程序是执行了一个READWrite的,从机的话我看数据手册上说是只有DR里面有值,主机来时钟就能通信了。所以我就直接给从机DR一个值了。大哥你能不能看出来这里从机有什么问题啊?主机是好使的,时钟波形数据都正确,就是从机返回的数据有错:Q

使用特权

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

本版积分规则

93

主题

289

帖子

5

粉丝