单片机
返回首页

CC2530 的SPI通信中的问题和解决方法

2018-05-05 来源:eefocus

打算使用TI公司的CC2530控制TI的电压芯片DAC081S101,需要用到SPI模块。因为我的开发板只能测试UART1对应的IO口,因此做了下面的测试。

TI论坛提供的spi文档:

http://www.ti.com.cn/cn/lit/an/swra223a/swra223a.pdf

1. 两个CC2430测试,一个作为master,一个作为slave

代码完全使用TI 的SPI文档中的code,slave采用中断接收的方式,收到数据之后通过UART0发送到电脑上查看数据,完全正确。

注意事项:

*接线,非常重要。

Master的MOSI接Slave的MOSI; Master的MISO接Slave 的MISO;千万不要交叉接线,这个和UART通信不同。

*slave接收

中断接收和查询接收都没有问题,读缓存之前不需要向U1DBUF里写无效数据,这个应该只针对Master读数据的情况。

其他只要认真阅读文档就不会有问题的。

* Master发送数据注意延时

每发送完一个数据要做一定的延时,使得数据能完全移送到移位寄存器里面。

比如:


                        SSN0=LOW;
for(int i=0;i{
U0DBUF=*pbuf;
pbuf++;
while(U0TX_BYTE==0);
Delay_ms(10); 
U0CSR &= 0xFD;
}
SSN0=HIGH;




* 同时该测试说明一个问题,即两个相同电压的SPI模块是可以直连的。



2. CC2430控制DAC081S101

采用UART0作为Master控制数模转换芯片,选用备选引脚1.即p0_2,p0_3,p0_5为外设引脚,p_4为片选引脚。

初始化

MASTER:

                PERCFG&=0xFE;
P0SEL|=0x2C;  // P0_2,p0_3,p0_5 are peripherals, that is MISO,MOST,SCK .
  P0SEL&=~0x10; //P0_4 is GPIO(SSN)


  P0DIR|=0x10;//SSN is set as output
 
U0CSR &= ~0xA0; //SPI MAster Mode

               U0BAUD = 0x3B; 
       U0GCR|=0x07;

                U0GCR|=0xC0;// CPOL = CPHA = 1

U0GCR |= 0x20;

            

SLAVE: 

        P0SEL|=0x3C; //P0_2,p0_3,p0_4,p0_5 are peripherals
    U0CSR &= ~0x80; //SPI mode 
    U0CSR |= 0x20; //slave mode 

             U0BAUD = 0x3B; 
     U0GCR|=0x07;

             U0GCR|=0xC0;// CPOL = CPHA = 1

             U0GCR |= 0x20;

             TCON &= ~0x08;

             URX0IE = 1;

             EA=1;

发送:

                          for(int i=0;i{
                                SSN0=LOW;
U0DBUF=0x32;

while(U0TX_BYTE==0);
Delay_ms(10); 
U0CSR &= 0xFD;
                                SSN0=HIGH;

}


中断接收:

#pragma vector = URX0_VECTOR 


__interrupt void HalSPISlave0IRQ(void)  


{


  TCON&=~0x08;
  rxBufferSlave0[bufferIndex0++]=U0DBUF;
  HalUARTWrite(HAL_UART_PORT_0, rxBufferSlave0, 10);
   
  if(bufferIndex0==(RX_SlAVEBUFFER_NUMBER+1))
  { 
    bufferIndex0=0;
    for(int i=0;i      rxBufferSlave0[i]=0;
  }


}


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 离子检测器电路分析

  • 一个简单的立体声平衡指示器电路

  • 分享一个电网倾角计电路

  • 使用NE555和磁簧开关的橱柜照明电路

  • 电谐波图形均衡器示意图

    相关电子头条文章