⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a7102.c

📁 无线模块A7102的C语言测试程序源码,
💻 C
📖 第 1 页 / 共 2 页
字号:
                /***********************************************
		*	copyrite (c) 2007
		*文件名: 	  A7102.c
		*作者:		  larry
		*当前版本:	  v1.0
		*建立时间:        2007-6-11 09:45
		*完成日期:
		
		*描述:            A7102驱动抽象程序,与MCU和IO
		*                 接口无关,由外部.h文件宏定义				     
		************************************************/		
#include    "../header/A7102.h"
/***********************************************
函 数:	Byte_Write()
功 能:	写8bit数据到sck和sdio
输 入:	byte
输 出:	/
描 述:	左移位,bit7在先,sck负边缘触发 
***********************************************/
void    Byte_Write(unsigned char byte)
{
        unsigned char i;
        
        for(i = 0x00; i < 0x08; i++)
        {
            if(byte&0x80)
                iSPI_Sdi     = positive;
            else
                iSPI_Sdi     = negative;
                
            delay_A7102_us();
            
            iSPI_Sck         = positive;
            
            delay_A7102_us();
            
            iSPI_Sck         = negative;
              
            delay_A7102_us();            
            
            byte           <<= 0x01;
        }
}
/***********************************************
函 数:	Byte_Read()
功 能:	读8bit数据从sck和sdio
输 入:	/
输 出:	byte
描 述:	左移位,bit7在先,sck负边缘触发 
***********************************************/
unsigned char   Byte_Read(void)
{
        unsigned char i;
        unsigned char byte;
        
        for(i = 0x00; i < 0x08; i++)
        {
            byte           <<= 0x01;
            
            delay_A7102_us(); 
            
            if(iSPI_Sdo)
                byte        |= 0x01;
            else
                byte        &= 0xfe;
                
            iSPI_Sck         = positive; 
                        
            delay_A7102_us();
             
            iSPI_Sck         = negative;              
        }
        
        /* 返回读取数值 */
        return    (byte);
}
/***********************************************
函 数:	Word_Write()
功 能:	写16bit数据到sck和sdio
输 入:	word
输 出:	/
描 述:	左移位,bit15在先,sck负边缘触发 
***********************************************/
void    Word_Write(unsigned int word)
{
        unsigned char i;
        
        for(i = 0x00; i < 0x10; i++)
        {           
            if(word&0x8000)
                iSPI_Sdi     = positive;
            else
                iSPI_Sdi     = negative;
            
            delay_A7102_us();
            
            iSPI_Sck         = positive;
            
            delay_A7102_us();
            
            iSPI_Sck         = negative;
            
            delay_A7102_us();            
            
            word           <<= 0x01;
        }
}
/***********************************************
函 数:	Word_Read()
功 能:	读16bit数据从sck和sdio
输 入:	/
输 出:	word
描 述:	左移位,bit16在先,sck负边缘触发 
***********************************************/
unsigned int    Word_Read(void)
{
        unsigned char i;
        unsigned int  word;
        
        for(i = 0x00; i < 0x10; i++)
        {
            word           <<= 0x01;
            
            delay_A7102_us();
            
            if(iSPI_Sdo)
                word        |= 0x0001;
            else
                word        &= 0xfffe;
                
            iSPI_Sck         = positive; 
                        
            delay_A7102_us();
            
            iSPI_Sck         = negative;
        }
        
        /* 返回读取数值 */
        return    (word);
}
/***********************************************
函 数:	A7102_Reset_Chip()
功 能:	复位A7102芯片 
输 入:	/
输 出:	/
描 述:	/
***********************************************/
void    A7102_Reset_Chip(void)
{
        iSPI_Scs        = negative;  
      
        /* 写A7102-Reset命令 */
        Byte_Write(0x7a);     
   
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Reset_FifoTX()
功 能:	复位A7102发送FIFO指针 
输 入:	/
输 出:	/
描 述:	/
***********************************************/
void    A7102_Reset_FifoTX(void)
{
        iSPI_Sck        = negative;
        iSPI_Scs        = negative;
        
        /* 写A7102-FifoTX命令 */
        Byte_Write(0x6a);
        
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Reset_FifoRX()
功 能:	复位A7102接收FIFO指针 
输 入:	/
输 出:	/
描 述:	/
***********************************************/
void    A7102_Reset_FifoRX(void)
{
        iSPI_Sck        = negative;
        iSPI_Scs        = negative;
        
        /* 写A7102-FifoRX命令 */
        Byte_Write(0xea);
        
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Fifo_Read()
功 能:	读FIFO数据 
输 入:	read_buff
输 出:	/
描 述:	/
***********************************************/
void    A7102_Fifo_Read(unsigned char *read_buff)
{
        unsigned char i;
	
        iSPI_Sck        = negative;
        iSPI_Scs        = negative;
        
        /* 读A7102-FIFO命令 */
        Byte_Write(0xca);
        
        declare_sdo_input();
        
        /* 读A7102-FIFO数据 */
        for(i = 0x00;i < C_FIFO_Byte;i++)
        {
            *read_buff  = Byte_Read();
            
            read_buff ++;
        }
        
        declare_sdo_output();
        
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Fifo_Write()
功 能:	写FIFO数据 
输 入:	write_buff
输 出:	/
描 述:	/
***********************************************/
void    A7102_Fifo_Write(unsigned char *write_buff)
{
        unsigned char i;

        iSPI_Sck        = negative;
        iSPI_Scs        = negative;

        /* 写A7102-FIFO命令 */
        Byte_Write(0x5a);

        /* 写A7102-FIFO数据 */
        for(i = 0x00;i < C_FIFO_Byte;i++)
        {
            Byte_Write(*write_buff);
            
            write_buff ++;
        }
        
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Id_Write()
功 能:	写ID到A7102内部寄存器 
输 入:	buff_id[]
输 出:	/
描 述:	写ID必须一次性写入 
***********************************************/
void    A7102_Id_Write(unsigned char *id_buff)
{
        unsigned char i;
	
        iSPI_Sck        = negative;
        iSPI_Scs        = negative;
        
        /* 写A7102-ID命令 */
        Byte_Write(0x2a);
        
        /* 写A7102-ID数据 */
        for(i = 0x00;i < 0x04;i++)
        {
            Byte_Write(*id_buff);
            
            id_buff ++;
        }
        
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Id_Read()
功 能:	读ID从A7102内部寄存器 
输 入:	/
输 出:	buff_id[]
描 述:	读ID必须一次性读出 
***********************************************/
void    A7102_Id_Read(unsigned char *id_buff)
{
        unsigned char i;
	
        iSPI_Sck        = negative;
        iSPI_Scs        = negative;
        
        /* 读A7102-ID命令 */
        Byte_Write(0xaa);
        
        declare_sdo_input();
        
        /* 读A7102-ID数据 */
        for(i = 0x00;i < 0x04;i++)
        {
            *id_buff    = Byte_Read();
            
            id_buff ++;
        }
        
        declare_sdo_output();
        
        iSPI_Scs        = positive;
}
/***********************************************
函 数:	A7102_Register_Write()
功 能:	写控制数据到A7102内部寄存器 
输 入:	addr,parameter
输 出:	/
描 述:	/
***********************************************/
void    A7102_Register_Write(unsigned char addr,unsigned int parameter)
{
        iSPI_Sck        = negative;
        delay_A7102_us();
        iSPI_Scs        = negative;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -