P3DIR|=BIT0;//主机模式,115200,8位数据位,三线模式,时钟模式1(具体见spi.c) SpiMasterInit(115200,8,3,1); //时钟不是准确的115200(具体见spi.c) _EINT(); //开中断,spi读写程序要需要中断 charfilter; adccon = 0x0f; if(chop == 0) { filter = 0x03; //滤波寄存器设为最小值,可以更改 mode = 0x91; //斩波禁止,10通道,无缓冲,空闲模式 } else { filter = 0x0D; //滤波寄存器设为最小值,可以更改 mode = 0x11; //斩波启用,10通道,无缓冲,空闲模式 } AD7708WriteRegister(0x07,0x00); //IO寄存器,不用== AD7708WriteRegister(0x03,filter); //滤波寄存器 AD7708WriteRegister(0x02,0x0F); //ADC控制寄存器,0通道,单极性 AD7708WriteRegister(0x01,mode); //模式寄存器 if(chop == 0) for(int i = 0; i<5;i++) { //校准,因只有5个失调寄存器,多的就会覆盖之前的,只校准5个即可 AD7708Cal(5); } _DINT();} 初始化制引入了斩波这一个参数,其他的均使用固定的参数:10通道伪差分、单极性、无缓冲、滤波寄存器设为斩波或禁止斩波时候的最快速度,需要的话可以自行修改。SPI初始化之后开中断,目的是向AD写内容以初始化AD。初始化完成后关中断,为了让程序库的初始化后一致,但调用这个函数后,需要开中断,才能正常使用AD采样的其它函数。
P3OUT&=~BIT0; //CS选中
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) | Powered by Discuz! X3.4 |