专家们好,我现在用ADE7880和
单片机进行SPI通讯,参照
*SPI dirver
*SPI0 of LPC2134 --- ADE7858
* SSpin must be toggled three
times high to low to make ADE7858 using SPI port
*2008-10-08
这个7858的SPI通讯程序,时序上应该没有错,目前我主要是用来测试SPI通讯问题,因此只加了A相电压,我想读取其有效值即AVRMS寄存器(地址0X43C1)内容,可是不管我加电压(220V),和不加电压读取的数都是不变,输出为16777215,总是这个数,我是32位读取,是4个字节,如果单独一个一个显示全部是255,相当于全1. 专家们可不可以给我提供一个SPI测试程序,我用的是AVR328的8位单片机,本身带有SPI。(我的程序思想:
启动SPI,使能ADE7880,选择PMS0工作模式,然后启动RUN,通过SPI读取AVRMS数据,用串口输出数据)
目前我没有找到这个读取不正常的具体原因因此有以下问题请教。
1、怎么判断ADE7880是否正常工作。也就是最小系统运行正常。
2、我原来设计的时候忽略了电压配置问题,单片机电源是5V,跟ADE7880(我是采用3.3V)进行通讯PM0、PM1都是直接跟单片机引脚相连的。这样会不会烧坏ADE7880,不过现在已对电路进行改动。
3、我们进行SPI通讯前要做那些必要的配置。
4、单片机SPI本身有一个数据模式配置有四种
- SPI_MODE0(上升沿采样,下降沿置位,SCK闲置时为0),
- SPI_MODE1(上升沿置位,下降沿采样,SCK闲置时为0),
- SPI_MODE2(下降沿采样,上升沿置位,SCK闲置时为1),
- SPI_MODE3(下降沿置位,上升沿采样,SCK闲置时为1)。
不知道这个要用哪一个才能跟ADE7880保持一致,不过我四种都试过,一样没有效果。