打印
[技术问答]

N76E003 SPI 发送 引脚没有波形出来 数据没有发送出来?

[复制链接]
1711|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如题  MOSI引脚没有变化  求解答

11.png (30.65 KB )

11.png

22.png (15.98 KB )

22.png
沙发
tianxj01| | 2018-8-8 08:02 | 只看该作者
#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"

#define SPI_CLOCK       1

//-----------------------------------------------------------------------------------------------------------
void SPI_Initial(void)
{
    #if   SPI_CLOCK == 0
            clr_SPR1;
            clr_SPR0;
    #elif SPI_CLOCK == 1
            clr_SPR1;
            set_SPR0;
    #elif SPI_CLOCK == 2
            set_SPR1;  
            clr_SPR0;
    #elif SPI_CLOCK == 3
            set_SPR1;
            set_SPR0;
    #endif

    /* /SS General purpose I/O ( No Mode Fault ) */
    set_DISMODF;
    clr_SSOE;
    /* SPI in Master mode */
    set_MSTR;
    /* MSB first */
    clr_LSBFE;
    clr_CPOL;
    clr_CPHA;
    /* Enable SPI function */
    set_SPIEN;
}

//-----------------------------------------------------------------------------------------------------------
void SPI_W_D(char DATA)
{
    SPDR = DATA;
    while((SPSR&0x80)==0x00);
    clr_SPIF;
}

//-----------------------------------------------------------------------------------------------------------
void main(void)
{      

    /* Note
       MCU power on system clock is HIRC (22.1184MHz), so Fsys = 22.1184MHz
    */
   
    Set_All_GPIO_Quasi_Mode;
    SPI_Initial();
    while(1){ SPI_W_D(0x55);}
}
//-----------------------------------------------------------------------------------------------------------


使用特权

评论回复
板凳
c475301174|  楼主 | 2018-8-8 10:18 | 只看该作者

不接  从设备  SPI数据能不能发出来?

使用特权

评论回复
地板
tianxj01| | 2018-8-8 10:42 | 只看该作者
c475301174 发表于 2018-8-8 10:18
不接  从设备  SPI数据能不能发出来?

上面程序和波形就是一个N76E003,外面什么都没有的波形。

使用特权

评论回复
5
tianxj01| | 2018-8-8 10:47 | 只看该作者
c475301174 发表于 2018-8-8 10:18
不接  从设备  SPI数据能不能发出来?


当MCU做主设备、写状态,外面有没有设备根本没有任何关系,因为,CLK是由主设备发的,MOSI也是主设备发的。
只有需要到从设备读取数据时候,才需要挂接从机以读取从设备应答数据(由MISO读入),该时候,CLK还是由主设备发出。

使用特权

评论回复
6
tianxj01| | 2018-8-8 11:04 | 只看该作者
再给你解说一下典型SPI工作原理。
SPI是一个典型的同步主从通信系统,这里约定一般主设备发送数据、从设备接收数据的为MOSI--(Master-Out  Slave-In),主设备接收端、从设备发送端为MISO。
整个通信过程,CLK永远由主设备控制、无论读写。
主设备发送周期,从设备根据主设备发送的CLK信号边沿,从主设备的MOSI上面读取对应数据。
从设备发送周期,从设备会根据主设备发送的CLK信号边沿,把发送的数据放到主设备的接收端(MISO)。  
因此作为典型的同步时钟收发系统,由于收发线分离,理论上SPI可以全双工工作。
编写SPI驱动时候,只要真正理解了任何时候通信时钟都是主设备控制的,就一个简单的收发通用基础驱动函数,可以完成SPI核心驱动。驱动一边CLK产生时钟,一边MOSI发送数据,并同时MISO读取就可以了。
发送数据时候,不需要管读取回来的数据,只是发送而已,而读取数据时候,为了发送时钟,所以主发送必须发送一个虚拟数据(无效数据)以便驱动时钟,并返回读取的数据就可以了。

使用特权

评论回复
7
c475301174|  楼主 | 2018-8-8 11:19 | 只看该作者
tianxj01 发表于 2018-8-8 10:47
当MCU做主设备、写状态,外面有没有设备根本没有任何关系,因为,CLK是由主设备发的,MOSI也是主设备发的 ...

用你的程序 调试   没有接从设备  CLK波形 如下面所示

33.jpg (355.74 KB )

33.jpg

使用特权

评论回复
8
tianxj01| | 2018-8-8 14:40 | 只看该作者
c475301174 发表于 2018-8-8 11:19
用你的程序 调试   没有接从设备  CLK波形 如下面所示


波形对了,地线不通,看幅度好像也有点问题。
检查外围吧。这样波形,芯片应该基本正常了。

使用特权

评论回复
9
c475301174|  楼主 | 2018-8-16 10:25 | 只看该作者
tianxj01 发表于 2018-8-8 14:40
波形对了,地线不通,看幅度好像也有点问题。
检查外围吧。这样波形,芯片应该基本正常了。
...

检查了芯片接地正常  也不知道问题出在哪里   怀疑芯片SPI坏了但芯片其他功能都正常    换了一块板就可以了

使用特权

评论回复
10
八层楼| | 2018-8-17 11:09 | 只看该作者
你要发送什么数据啊 没有看见数据往寄存器里写啊

使用特权

评论回复
11
观海| | 2018-8-18 13:56 | 只看该作者
发送数据的时候看看数据存储器里边有没有数据

使用特权

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

本版积分规则

13

主题

113

帖子

3

粉丝