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

发布者:LovingLife2023最新更新时间:2018-05-05 来源: eefocus关键字:CC2530  SPI通信 手机看文章 扫描二维码
随时随地手机看文章

打算使用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;
  }


}


关键字:CC2530  SPI通信 引用地址:CC2530 的SPI通信中的问题和解决方法

上一篇:MSP430G2xx1系列USI的SPI模式详解
下一篇:msp430之DMA控制器

推荐阅读最新更新时间:2024-03-16 16:01

基于ARM、嵌入式Linux和CC2530构建的无线气象数据通信系统开发
自动气象站数据采集器一般基于单片机或PC/104总线控制器设计,具有与PC兼容性好、功耗低、体积紧凑等特点,然而如何设计出功能强大,网络传输功能强的自动气象站数据采集器,满足现代气象检测的要求,是一个值得研究的课题。 文中基于ARM微处理器和Linux操作系统平台,借助前端无线传感器网络的数据输入,利用嵌入式Qt的开发优势并设计数据通信格式,完成无线气象数据通信系统的设计,实现了数据的可靠传输。为天气预报、科学研究、气象灾害预警等提供实时的气象观测数据。 1 无线气象数据通信系统的基本组成 如图1所示,无线气象数据通信系统主要由无线传感器网络节点、协调器、数据通信器(数据通信器以S3C2440AL为核心)、远程服务器等
[单片机]
基于ARM、嵌入式Linux和<font color='red'>CC2530</font>构建的无线气象数据<font color='red'>通信</font>系统开发
cc2530芯片有哪些功能
  CC2530是专门针对IEEE 802.15.4和Zigbee应用的单芯片解决方案,经济且低功耗。 CC2530有四种不同的版本:CC2530-F32 / 64 / 128 / 256。分别带有32 / 64 / 128 / 256 KB的闪存空间;它整合了全集成的高效射频收发机及业界标准的增强型8051微控制器,8 KB的RAM和其他强大的支持功能和外设。   主要特点:   高达256kB的闪存和20kB的擦除周期,以支持无线更新和大型应用程序    8kB RAM用于更为复杂的应用和Zigbee应用    可编程输出功率达+4dBm   在掉电模式下,只有睡眠定时器运行时,仅有不到1uA的电流损耗    具有强大的
[单片机]
<font color='red'>cc2530</font>芯片有哪些功能
STM32 SPI和TM1628通信
uint8_t TM1628_WritePro(void) {undefined //SPI1- CR1 |= SPI_Direction_1Line_Tx ; SPI1- CR1 = 0xc3ff; while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); SetSTB; DelayXu(5); ClrSTB; DelayXu(2); SPI_SendData8(SPI1,0x00); while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET); SetSTB; De
[单片机]
SPI实现dsPlC与ISD语音芯片的通信
摘要 介绍dsPIc数字信号控制器以厦ISD4002语音芯片的功能特点;特别介绍dsPIC的SPl库函数的功能及使用,并给出一种简单的语音录放电路。具有低成本、易使用等特点,有较高的实用价值。 关键词 dsPIC dsPlC30F6014 ISD4002 语音芯片 在很多应用场合中,需要用到语音录放功能,如复读机、电话自动应答装置等。本文介绍一种简单实用的dsPIc数字信号控制器,用来完成语音录放功能。由于dsPIC强大的数字信号处理功能,可以提供后续的复杂处理等,具有良好的易扩展性。 1 dsPlC系列的简单介绍 dsPIC系列是Microchip公司推出的新型16位高性能数字信号控制器。它结合了单片机的控制优点及数字
[手机便携]
ZigBee-CC2530单片机 - 按键控制LED
程序源码 #include ioCC2530.h //引用CC2530头文件 #define LED1 (P1_0) //LED1端口宏定义 #define SW1 (P1_2) //SW1端口宏定义 /************************************************************** 函数名称:delay 功 能:软件延时 入口参数:time--延时循环执行次数 出口参数:无 返 回 值:无 **************************************************************/ void delay(unsigned int ti
[单片机]
SPI总线在XF-S4240与MCS51通信中的应用介绍
   SPI总线技术是Motorola公司推出的一种同步串行接口。它可以使MCU与各种外围设备以串行方式进行通信以交换信息,并且硬件连接较少,编程方便。 SPI接口已经是一种标准外设接口,目前已有很多MCU及外设都带有SPI接口。MCS51虽然也有带SPI接口的单片机——AT89S8252,但价格相对较高。在开发基于RFID的自助语音导游系统中,由于RFID读卡模块带有SCI接口,XF-S4240语音合成模块带有SCI及SPI接口,如采用不带有SPI接口的AT89C51单片机,必然存在扩展接口的问题。 本文介绍的C51软件模拟实现SPI通信接口的方法,编程简单,有效降低了系统的成本。该方法已在项目开发中得到了验证。
[单片机]
<font color='red'>SPI</font>总线在XF-S4240与MCS51<font color='red'>通信</font>中的应用介绍
stm32 io模拟spi通信
首先借鉴他人的编写程序: #define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10) #define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10) #define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13) #define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) unsigned char SPI_SendByte(unsigned char dt)
[单片机]
cc2530裸机编程系列笔记2--定时器Timer1模模式程序 中断方式
上篇专题中描述的是采用查询的方式完成定时器Timer1模模式程序的设计,本篇则介绍采用中断的方式完成定时器Timer1模模式程序的设计。查询的方式,上篇已经介绍过就是在主程序中不断的查询中断标志是否被置位,置位后则进行相应处理。中断的方式则为,当中断产生时,CC2530在硬件的作用下将程序跳转到中断中断服务程序去执行。先贴出中断方式的程序: #include ioCC2530.h #define uint8 unsigned char #define uint16 unsigned int #define BIT(x) (1 x) #define LED1 P1_0 /**********************
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved