您现在的位置: 主页 > MCU > 单片机技术应用 > CC2530 的SPI通信中的问题和解决方法 -
本文所属标签:
为本文创立个标签吧:

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

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
打算使用TI公司的CC2530控制TI的电压芯片DAC081S101,需要用到SPI模块。因为我的开发板只能测试UART1对应的IO口,因此做了下面的测试。TI论坛提供的spi文档:http://www.ti.com.cn/cn/lit/an/swra223a/s

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

本文引用地址: http://www.21ic.com/app/mcu/201806/764502.htm

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;
}


}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > CC2530 的SPI通信中的问题和解决方法 -
 

"CC2530 的SPI通信中的问题和解决方法 -"的相关文章

网站地图

围观()