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

📄 isddriv.c

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 C
字号:
/****************************************************************
**                                                              *
**  FILE         : isddriv.C                                    *
**  COPYRIGHT    :  (c) 2001 .Xiamen Yaxon NetWork CO.LTD       *
**                                                              *
**                                                              *
**  By : Cyb 2006.12.15                                         *
****************************************************************/

#include "includes.h"
#include "errcode.h"
#include "errtask.h"
#include "bsp.h"
#include "isddriv.h"

static void Delay(INT8U nums)
{
     INT8U i;
     
     for(i = 0;i<nums;i++)
     {
         __asm
         {
           NOP
         }
     }
}
static void ConfigSpiPort(void)
{
     Init_PIN_SCLK();
     Init_PIN_MOSI();
     Init_PIN_MISO();
     Init_PIN_NSS();
}

static INT32U GetBit(INT8U order)
{
   INT8U i;
   INT32U temp;
   
   for( i=0;i<3;i++)
   { 
      if (Read_PIN_MOSI())
      {
          temp = 1 << order;
      }
      else
      { 
          temp = 0;
      }
    
   }
   
   return temp;
}

void InitISD(void)
{
     ConfigSpiPort();
     SET_PIN_NSS(); 
     Delay(2);
     SET_PIN_SCLK();
     SET_PIN_MISO();
}  

 
INT16U SendISDOP(INT8U op, INT16U adr)
{
      INT8U i;
      INT32U recev;
      INT32U temp1;
      INT32U temp2;
      
      op <<= 3;
      temp1 = op;
      temp1 <<= 0x10;
      temp1 = temp1 | adr;
      recev = 0;
      InitISD();
      CLEAR_PIN_SCLK();
      Delay(2);
      CLEAR_PIN_NSS();
      Delay(2);
      
      for(i=0;i<24;i++)
      {
         if( temp1 & (1<< i))
         {
              SET_PIN_MISO();   
         }
         else
         {
              CLEAR_PIN_MISO();
         }
         
         Delay(2);
         SET_PIN_SCLK();
         Delay(2);
         CLEAR_PIN_SCLK();
         temp2 = GetBit(i);
         recev = recev | temp2;
          
      }
      
      recev >>=1;
      InitISD();
      Delay(10);
      return (INT16U)recev;
  
}


⌨️ 快捷键说明

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