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

📄 max1249.c

📁 基于44B0的Bootload原代码,详细的设计了 44B0开发平台的BOOT
💻 C
字号:
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\def.h"
#include "..\inc\max1249.h"

/* 
H/W CONNECTIONS
    SCLK :PE5
    DIN  :PE4
    DOUT :PG0
*/


#define SCLK_H()    rPDATE=rPDATE|0x20  //CKE:PE5   
#define SCLK_L()    rPDATE=rPDATE&~0x20  
#define SCLK_HL()   SCLK_H();SCLK_H();SCLK_L()  //200ns 
#define DIN_H()	    rPDATE=rPDATE|0x10  //nGCS7: PE4 
#define DIN_L()	    rPDATE=rPDATE&~0x10
#define DOUT()	    (rPDATG & 0x1)	//EINT0: PG0

U32 ReadMax1249(U32 ch);

void Test_Max1249(void)
{
    //Port configuration:PE4,PE5=output port, PG0=input port
    
    rPCONE=rPCONE &~0x30|0x0;
    rPCONG=rPCONG &~0x3 |0x0;
    SCLK_L();
    DIN_L();

    Uart_Printf("The ADC_IN are adjusted to the following values\n");	      
    Uart_Printf("Push any key to exit!!!\n");	 

    //rCLKCON=0x3ff8;

    while(Uart_GetKey()==0)
    {
	Uart_Printf("A0=%04xh ",ReadMax1249(0));
	Uart_Printf("A1=%04xh ",ReadMax1249(1));
	Uart_Printf("A2=%04xh ",ReadMax1249(2));
	Uart_Printf("A3=%04xh\n",ReadMax1249(3));
    }
}


U32 ReadMax1249(U32 ch)
{
    int saveINTMSK;
    U32 sel2[4]={0x0,0x1,0x0,0x1};
    U32 sel1[4]={0x0,0x0,0x1,0x1};
    U32 sel0[4]={0x1,0x1,0x0,0x0};
    int i,j;
    U32 data=0;

    saveINTMSK=rINTMSK;
    rINTMSK=~(BIT_GLOBAL);  
    
    SCLK_L();
    DIN_H();
    for(i=0;i<4;i++); 
    SCLK_HL();

    if(sel2[ch]){DIN_H();} else {DIN_L();}  //channel select
    for(i=0;i<4;i++); //200ns
    SCLK_HL();

    if(sel1[ch]){DIN_H();} else {DIN_L();}
    for(i=0;i<4;i++); //200ns
    SCLK_HL();

    if(sel0[ch]){DIN_H();} else {DIN_L();}
    for(i=0;i<4;i++); //200ns
    SCLK_HL();

    DIN_H();			    //unipolar 0 ~ 3.3V
    for(i=0;i<4;i++); //200ns
    SCLK_HL();

    DIN_H();			    //single ended, (VIN-0V)
    for(i=0;i<4;i++); //200ns
    SCLK_HL();

    DIN_H();			    //external clock mode
    for(i=0;i<4;i++); //200ns
    SCLK_HL();
    DIN_H();			    
    for(i=0;i<4;i++); //200ns
    SCLK_HL();
    
    DIN_L();for(i=0;i<4;i++); //200ns
    for(j=0;j<16;j++)
    {
	SCLK_HL();
	for(i=0;i<4;i++); //200ns
	data=(data<<1)|DOUT();
    }
    rINTMSK=saveINTMSK;
    //return (data);
    return (data>>6);
}

⌨️ 快捷键说明

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