AD7177-2数据输出问题
<p>最近在调试stm32+ AD7177-2,给AD7177一个50hz的正弦波,stm32用串口接收数据,接收的波形不完整。</p><p>这是AD7177的寄存器配置:</p>
<p>主要是配置:</p>
<p>ADC的通道:AIN0(+),AIN1(-)</p>
<p>ADC的输出速率:5000SPS</p>
<p>ADC的转换模式:连续转换;</p>
<p> </p>
<p> </p>
<p>还有就是,淘宝买的板子,给的例程使用的模拟SPI,没有使用硬件SPI,这对stm32接收有影响吗?</p>
<pre>
<code>#include "mcp_myspi.h"
#include "delay.h"
#include "sys.h"
#include "stm32f10x_spi.h"
//ÒÔÏÂÊÇSPIÄ£¿éµÄ³õʼ»¯´úÂ룬ÅäÖóÉÖ÷»úģʽ
//SPI¿Ú³õʼ»¯
void AD717x_Send8Bit(uint8_t _data);
uint8_t AD717x_Recive8Bit(void);
void AD717x_WaitDRDY(void);
void AD717x_DelaySCLK(void);
void AD717x_DelayDATA(void);
void AD717x_soft_spi(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* ´ò¿ªGPIOʱÖÓ */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); // ʹÄÜPA¶Ë¿ÚʱÖÓ
/* ÅäÖü¸¸öÍÆÍêÊä³öIO */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* ÍÆÍìÊä³öģʽ */
GPIO_InitStructure.GPIO_Pin = PIN_SCK;
GPIO_Init(PORT_SCK, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = PIN_DIN;
GPIO_Init(PORT_DIN, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = PIN_CS;
GPIO_Init(PORT_CS, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = PIN_SYNC;
GPIO_Init(PORT_SYNC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /* PIN_DOUT ÉèÖÃΪÊäÈëÉÏÀ */
GPIO_InitStructure.GPIO_Pin = PIN_DOUT;
GPIO_Init(PORT_DOUT, &GPIO_InitStructure);
CS_1();
SCK_1(); /* SPI×ÜÏß¿ÕÏÐʱ£¬ÖÓÏßÊǵ͵çƽ */
DI_1();
SYNC_0;
}
void AD717x_DelaySCLK(void)
{
uint16_t i;
for (i = 0; i < 2; i++);
}
void AD717x_DelayDATA(void)
{
delay_us(10); /* ¡Á?D??¨®3¨´ 6.5uS, ¡ä?¡ä|¨¨?10us */
}
void AD717x_Send8Bit(uint8_t _data)
{
uint8_t i;
AD717x_DelaySCLK();
AD717x_DelaySCLK();
for(i = 0; i < 8; i++)
{
if (_data & 0x80)
{
DI_1();
}
else
{
DI_0();
}
SCK_0();
AD717x_DelaySCLK();
SCK_1();
_data <<= 1;
AD717x_DelaySCLK();
}
AD717x_DelayDATA();
}
uint8_t AD717x_Recive8Bit(void)
{
uint8_t i;
uint8_t read = 0;
AD717x_DelaySCLK();
for (i = 0; i < 8; i++)
{
SCK_1();
AD717x_DelaySCLK();
SCK_0();
read = read<<1;
if (DO_IS_HIGH())
{
read++;
}
AD717x_DelaySCLK();
}
return read;
}
</code></pre>
<p> </p>
<p>对于手册中的连续读取模式,我是要通过串口发送0x02;0x0080,之后再读取数据吗?</p>
<p> </p>
<p>用串口接收数据,接收的波形不完整,表明看起来好像是程序的事情,但没看波形具体是个怎么不完整的</p>
<p>连续转换模式和连续读取模式必须配套使用。</p>
<p> </p>
<p>对于手册中的连续读取模式,我是要通过串口发送0x02;0x0080,之后再读取数据吗?</p>
<p>看资料上逻辑关系图描述的是。</p>
<p> </p>
<p>连续转换模式的读数据必须在下次转换完成前读出,否则可能出问题。</p>
<table cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td id="postmessage_3283448">
<p><strong>我们专业代理分销ADI全线产品,部分有现货,全部产品均为原装可追溯。如有需要可以站内联系我。</strong></p>
</td>
</tr>
</tbody>
</table>
页:
[1]