打印

stm32f103的SPI通讯问题

[复制链接]
5563|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jokerkiss|  楼主 | 2008-7-11 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
拜问下 大虾们 SPI1 和 SPI2 都设定为双线双工 , SPI1 主 SPI2 从 
  在 通讯的时候 SPI1 向 SPI2 发送数据 SPI2 能接收 但是 SPI2 向 
  SPI1 发送的数据 SPI1 却 接收不到 
      两个口是同时发送数据的  量到 SPI2 确实发了数据 
    
沙发
ST_ARM| | 2008-7-11 10:28 | 只看该作者

两个口是同时发送数据的?

如何解释这句话?从设备的发送是靠主设备的时钟才能进行的。

使用特权

评论回复
板凳
香水城| | 2008-7-11 10:38 | 只看该作者

SPI主设备可以主动发送数据,SPI从设备不能主动发送数据

SPI从设备发送的数据必须是在接收主设备的同时送出去的,这是因为SPI从设备不能产生传输所需要的时钟信号,只有SPI主设备才能送出时钟信号。

使用特权

评论回复
地板
jokerkiss|  楼主 | 2008-7-11 10:42 | 只看该作者

Thanks your attention

     /* Send SPI2 data */ 
     SPI2_Send_8( 0x55 );  
    
    /* Send SPI1 data */ 
    SPI1_Send_8( 0xaa );  

    /* Wait for SPI2 data reception */
    while(SPI_GetFlagStatus(SPI2, SPI_FLAG_RXNE)==RESET);

    msn2 = SPI_ReceiveData(SPI2);
    /* Wait for SPI1 data reception */ 

    msn1 = SPI_ReceiveData(SPI1);    

   这里 SPI1 的 收到的 就 是 0XFF 
     

使用特权

评论回复
5
香水城| | 2008-7-11 11:08 | 只看该作者

请说明硬件是如何接的,SPI1和SPI2是如何配置的

使用特权

评论回复
6
jokerkiss|  楼主 | 2008-7-12 15:09 | 只看该作者

谢谢了

问题找出来了 连接的一个电阻 坏了 现在能够 接收到 了
  不过 还是想问下 在双工的时候 发送和接收 是同时的 
    在数据缓冲器 SPI_DR 里面 是怎样 工作的 
       需要一位位 的 移位发送 , 又要一位位 的 移位接收
  但是在DATASHEET 里 就只有一个移位 寄存器啊

使用特权

评论回复
7
香水城| | 2008-7-12 16:55 | 只看该作者

STM32的技术参考手册中有详细的内部框图

使用特权

评论回复
8
biyveddd| | 2010-1-10 16:23 | 只看该作者
发送我接收是两个寄存器,物理上是独立的,应该和51的SBUF一样

使用特权

评论回复
9
yybj| | 2010-1-10 16:54 | 只看该作者
那你的从设备的时钟信号时哪来的

使用特权

评论回复
10
cambrain| | 2010-1-28 13:27 | 只看该作者
从设备没开时钟,用的是主设备的时钟啊。

使用特权

评论回复
11
香水城| | 2010-1-28 13:53 | 只看该作者
怎么2008年的帖子又被顶上来了,:dizzy:

使用特权

评论回复
12
无冕之王| | 2010-1-28 16:07 | 只看该作者
这个可以顶

使用特权

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

本版积分规则

4

主题

6

帖子

0

粉丝