8488|6

4

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC2530 硬件SPI做主机发送完,能自动接收到从机的应答数据吗 [复制链接]

CC2530 硬件SPI做主机发送完,能自动接收到从机的应答数据吗?
我看协议栈里面的发送只是发送,没有接收。我控制SI4463模块,发送过去数据后,得不到应答。

1.2530 SPI初始化 程序
void SPI_Init(void)
{
    uint8 baud_exponent;
    uint8 baud_mantissa;
    /* Set SPI on UART 1 alternative 2 */
    PERCFG |= 0x02;

    /* Configure clk, master out and master in lines */
    P1SEL &=0XE0;
    P1DIR |=0XE0;
    P1INP &=0XFC;
    P2INP &=0X00;
    P1SEL |= (1<     P1SEL |= (1<     P1SEL |= (1<    
    /* Set SPI speed to 1 MHz (the values assume system clk of 32MHz)
    * Confirm on board that this results in 1MHz spi clk.
    */
    baud_exponent = 0x0f;
    baud_mantissa =  0;
   
    /* Configure SPI */
    U1UCR  = 0x80;      /* Flush and goto IDLE state. 8-N-1. */
    U1CSR &= 0XA0;
    U1CSR  |=0x40;      /* SPI mode, master.主模式,同时允许接收 */
    U1GCR  = 0x20 | 0x00 | 0x00 | baud_exponent;
    U1BAUD = baud_mantissa;

}

2.模块初始化 SI4463
** SI4463_接口初始化
*********************************************************************/
void SI4463_InterFace(void)
{
    //init io pin
   
    /* GPIO configuration */
    SPI_NIRQ_INIT; //NIRQ中断脚配置为输入模式 P0_5
    SPI_RESET_INIT; //P0_6
    SPI_CS_INIT;  //P1_4
   
    SPI_Init();
  
}

3.SPI发送一个字节
/*********************SPI发一字节并接收一字节数据****************************/
unsigned char SPI_ExchangeByte( unsigned char input )
{

u8 data;
        //U1CSR &= ~(BV(2) | BV(1));
        U1DBUF = input;
        while ((U1CSR&0x01)!=0x01);   
//U1TX_BYTE=0;
        asm("nop");asm("nop");asm("nop");asm("nop");
        asm("nop");asm("nop");asm("nop");asm("nop");
data=U1DBUF;
        U1CSR &= ~(BV(2) | BV(1));
return data;

}
3.发送命令给SI4463
void SI446X_CMD(  unsigned char *cmd, unsigned char cmdsize )
{
    SI446X_WAIT_CTS( );//程序得不到MISO应答,卡在了这里,
   
    SI_CSN_LOW( );
  
    while( cmdsize -- )
    {
        SPI_ExchangeByte( *cmd++ );
    }
    SI_CSN_HIGH( );
}
4。 询问SI4463是否空闲,
void SI446X_WAIT_CTS( void )
{
    unsigned char cts;
    do
    {
        SI_CSN_LOW( );   
        SPI_ExchangeByte( READ_CMD_BUFF );
        cts = SPI_ExchangeByte( 0xFF ); //就在这里,卡住了,cts 得不到返回数据。   
        SI_CSN_HIGH( );
        
    }while( cts != 0xFF );
}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
谁给看看,解决一下,2530的SPI 发送完一个字节,能够自动保存MISO的 返回数据就解决问题了。示波器也看了,CLK 正常,MOSI有数据出去。但是MISO一直低电平没反应。
SI4463模块用STM8S103F测试 成功的。有应答数据。  这个程序就是从STM8S移植过来的。

等待中。。。。
此帖出自无线连接论坛

最新回复

楼主问题解决了吗?我也遇到一样的问题了。我使用的是Si4461芯片,按照资料上说在Power up 命令发送之后需要等待CTS,但我在命令发送之后却一直等不到CTS回复。回读寄存器的值 ,都是对的,但就是没有CTS回复。  详情 回复 发表于 2013-12-25 23:21

点评

楼主,问题解决了吗?我出现了和你一样的情况,不知道怎么办好了?急死了  详情 回复 发表于 2013-11-13 17:27
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

补充附件,我的2530 程序,IAR 8.1打开,还有SI4463的STM8S驱动程序,后者可用

2530-GenericApp基站-SI4463.rar

6.99 MB, 下载次数: 80

2530 SPI程序

STM8S-SI4463.rar

4.89 MB, 下载次数: 66

STM8S103F驱动SI4463模块

此帖出自无线连接论坛
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

板凳
 
如果搞不定可以把官方的flash.c和.h文件拷贝出来试下
此帖出自无线连接论坛
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

4
 
就是照着官方的配置的,MOSI已经发出去数据了,CLK 时钟也有,示波器能看到8个周期
此帖出自无线连接论坛
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

5
 
如果实在不行,你可以尝试用IO模拟SPI时序,这应该是更容易些
此帖出自无线连接论坛
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 楼主shaozhanyu 的帖子

楼主,问题解决了吗?我出现了和你一样的情况,不知道怎么办好了?急死了
此帖出自无线连接论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
楼主问题解决了吗?我也遇到一样的问题了。我使用的是Si4461芯片,按照资料上说在Power up 命令发送之后需要等待CTS,但我在命令发送之后却一直等不到CTS回复。回读寄存器的值 ,都是对的,但就是没有CTS回复。
此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表