电路设计论坛
直播中

李梅

7年用户 1318经验值
私信 关注
[问答]

ad2s1210串口通讯可以写入无法读取是怎么回事?

各位工程师你们好,最近在调试ad2s1210,利用spi通讯,硬件的励磁输出已经没有问题,且写入ad2s1210更改励磁频率也能实现,但是读取时却无法读出数值,始终为0,同时LOT和DOS寄存器始终为低电平,按照数据手册复位无法清除,程序是根据例程移植而来,硬件上cs始终置低,所以去除了对cs的操作部分,芯片主频为40mhz,下面附上程序,麻烦各位帮忙解答,谢谢。
AD2S1210 启动 () 无效
{
gpio_ set(RESET,0);
gpio_ set( SAMPLE, 1) ;
延迟_ad( 50000) ;
gpio_ set( RESET, 1) ;
延迟( 5000000) ;
gpio_ set( SAMPLE, 0) ;
延迟_ad(1);
gpio_ set( SAMPLE, 1) ;
}
SPIRead( 未签名字符数, 未签名字符*buf) 无效
{
未签名字符i=0;
未签名字符j = 0;
未签名的 int iTemp = 0;
未签名的字符“旋转数据”= 0;
   for(j=count; j>0; j--)
   {
   for(i=0; i<8; i++)
   {
gpio_set( SCLK, 1) ;
   RotateData <<= 1; //Rotate data
延迟_ad(1);
   iTemp =(((GPIOB_BASE_PTR->PDIR) >> (0))   1) ;//(MISO); //Read SDO of AD2S
gpio_ set( SCLK, 0) ;
   if(iTemp>=1)
   {
旋轉Data #% 1;
   }
延迟_ad(1);
   }
* (buf j - 1) = 旋转数据;
   }
}  
无效的 ReadFromAD2S1210( 未签名字符模式、 未签名字符地址、 未签名字符 * buf)
{
如果(模式=foolfIG)
   {
//write 控制登记地址
buf[0]=地址;
gpio_set( SCLK, 1) ;
延迟_ad(4);
gpio_ set( WR, 1) ;
延迟_ad(1);
gpio_set( WR, 0);
延迟_ad(1);
spiwrite( 1, buf) ;
gpio_ set( WR, 1) ;
延迟_ad(1);
//write 控制登记地址
/读 1 字节登记簿
gpio_set( SCLK, 1) ;
延迟_ad(1);
gpio_ set( WR, 1) ;
延迟_ad(2);
gpio_ set( SCLK, 0) ;
延迟_ad(1);
gpio_set( WR, 0);
延迟_ad(1);
spiread( 1, buf) ;
gpio_ set( WR, 1) ;
延迟_ad(2);
/读 1 字节登记簿
   }
如果其他(模式====================================================================================================================================================
   {
gpio_ set( SAMPLE, 1) ;
延迟_ad(1);
gpio_ set( SAMPLE, 0) ;
延迟_ad(5);
/读取 3 字节登记簿
gpio_set( SCLK, 1) ;
延迟_ad(1);
gpio_ set( WR, 1) ;
延迟_ad(3);
gpio_ set( SCLK, 0) ;
延迟_ad(1);
gpio_set( WR, 0);
延迟_ad(1);
SPIRead(3,buf);/阅读数据登记册
gpio_ set( WR, 1) ;
延迟_ad(2);
/读取 3 字节登记簿
   }
}

更多回帖

发帖
×
20
完善资料,
赚取积分