ADS7818读数?
尝试用硬件SPI调试7818,但是关于读数的问题有点不清楚
uint Read_Data(void)
{
uint convdata_H,convdata_L,convdata;
float Voltage;
CONV_0;
TXBUF0 = 0x00;
TXBUF0 = 0x00;
while ((IFG1 & URXIFG0) == 0); // USART0 RX buffer ready?
convdata_H = RXBUF0;
while ((IFG1 & URXIFG0) == 0); // USART0 RX buffer ready?
convdata_L = RXBUF0;
CONV_1;
convdata_H = convdata_H << 4;
convdata_L = convdata_L >>4;
convdata = convdata_H+convdata_L;
Voltage=convdata*4.999/4096;
Disp_float_num(1,2,Voltage);
return convdata;
}
/************主函数************/
#include <msp430x16x.h>
#include "ADS7818.h"
#include "cryfuncs.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
Ini_Lcd();
ME1 |= USPIE0; // Enable USART0 SPI mode
UCTL0 |= CHAR + SYNC + MM; // 8-bit SPI Master **SWRST**
UTCTL0 |= CKPH + SSEL1 + SSEL0 + STC; // SMCLK, 3-pin mode
UBR00 = 0x02; // UCLK/2
UBR10 = 0x00; // 0
UMCTL0 = 0x00; // no modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
P3SEL |= 0x0E; // P3.1-3 SPI option select
P3DIR |= 0x01; // P3.0 output direction
CONV_1;
showADS7818();
while (1) // Loop
{
volatile unsigned int i;
i = Read_Data();
}
}
这样写可以吗?运行以后有数据但是数据不对而且乱跳,不知道是哪里的问题。。
先验证一下时序波形, 特别是 SPI 的波形边沿设置是否匹配
看了一下时钟的波形是对的,但是输出的波形就很奇怪了。。
CONV+SCLK
这样看CONV和时钟的间隔没有符合手册上的5us。。
DATA+SCLK.....
(什么鬼。。。)
此时输入1V
还有就是用示波器的探头接到单片机的地的时候,读数是对的,但是会有400-500多mv的偏差,把探头的地松开,读数就不对了,这是为什么?
ps:芯片用的模拟地和模拟VDD,我试过用数字供电,但结果不对