本帖最后由 睡着思考 于 2014-10-11 16:10 编辑
/***********************************************************/
/* */
/* ADS8341操作函数 */
/* */
/***********************************************************/
#define ADPORT GPIOB
//#define ADReset GPIO_Pin_3
#define DClk GPIO_Pin_8
#define Dout GPIO_Pin_10
#define Din GPIO_Pin_9
//#define DRTY GPIO_Pin_7
#define DClk0() GPIO_ResetBits(GPIOB,DClk)
#define DClk1() GPIO_SetBits (GPIOB,DClk)
#define Din0() GPIO_ResetBits(GPIOB,Din)
#define Din1() GPIO_SetBits (GPIOB,Din)
extern void delay_nus(unsigned long n);
extern void delay_nms(unsigned long n);
void WriteByte8341(unsigned char x)
{
unsigned char i;
delay_nus(50);
DClk1();
delay_nus(100);
for (i=0; i<8; i++)
{
Din0();
DClk0();
delay_nus(10);
if( (x & 0x94) )
{
Din1();
delay_nus(100);
}
else
{
Din0();
delay_nus(100);
}
// AdDin =(bit) (x & 0x80);
DClk1();
delay_nus(100);
x <<=1;
}
Din0();
delay_nus(1000);
}
unsigned int ReadWord8341(void)
{
unsigned char i;
unsigned int x=0 ;
delay_nus(100);
DClk1();
delay_nus(100);
for (i = 0 ; i < 16 ; i++)
{
DClk0();
x<<=1;
if(GPIO_ReadInputDataBit(GPIOB,Dout))
{
x |= 0x01;
}
else
{;;}
delay_nus(100);
DClk1();
delay_nus(100);
}
return x;
}
void Reset8341(void)
{
unsigned char i;
// GPIO_ResetBits(ADPORT,ADReset);
// delay_nms(10);
GPIO_SetBits (ADPORT,Dout);
delay_nms(300);
for(i=0;i<35;i++)
{
DClk0();
delay_nus(10);
Din1();
delay_nus(90);
DClk1();
delay_nus(100);
}
Din1();;;
delay_nus(50);
}
void Init8341() //第一个端口初始化
{
Reset8341();
delay_nus(100);
WriteByte8341(0x94);//选择操作时钟寄存器
// delay_nus(100);
// WriteByte8341(0x04);
// delay_nus(100);
// WriteByte8341(0x10);
// delay_nus(100);
// WriteByte8341(0x44);
// delay_nus(100);
}
//void Init8341_2() //第二个端口初始化
//{
// Reset8341();
// WriteByte8341(0x21);//选择操作时钟寄存器
// WriteByte8341(0x04);
// WriteByte8341(0x11);
// WriteByte8341(0x44);
//}
unsigned int GetData8341() //读取第一个通道
{
WriteByte8341(0x94);
return ( ReadWord8341() );
}
//unsigned int GetData8341_2() //读取第二个通道
//{
// WriteByte8341(0x39);
// return ( ReadWord8341() );
//}
///在主函数中只用了下面连个函数
Init8341(); //初始化ADS8341通道1
delay_nms(10);
Voltage = GetData8341();
求高手解惑 不胜感激。
|