新手入门
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2011-7-26
- 在线时间
- 0 小时
|
原子的模拟SPI易理解,不过看火牛的例程不懂了。
/*******************************************************************************
* Function Name : RD_AD
* Description : 读取ADC值
* Input : None
* Output : None
* Return : ADS7843返回二字节数据
* Attention : None
*******************************************************************************/
static int RD_AD(void)
{
unsigned short buf,temp;
/* Wait for SPI1 Tx buffer empty */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send SPI1 data */
SPI_I2S_SendData(SPI1,0x0000);
/* Wait for SPI1 data reception */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI1 received data */
temp=SPI_I2S_ReceiveData(SPI1);
buf=temp<<8;
DelayUS(1);
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
/* Send SPI1 data */
SPI_I2S_SendData(SPI1,0x0000);
/* Wait for SPI1 data reception */
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
/* Read SPI1 received data */
temp=SPI_I2S_ReceiveData(SPI1);
buf |= temp;
buf>>=3;
buf&=0xfff;
return buf;
}
读数据为什么要发送个数据呢。看网上有说发数据才有时钟SCLK,所以才要送数据同时接收,是这样吗?
|
|