OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3099|回复: 3

求助SPI通信逐步调试与全速跑得到的值不一样

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-4-28
在线时间
3 小时
发表于 2020-5-8 14:52:21 | 显示全部楼层 |阅读模式
1金钱
在用SPI读取一款电能计量芯片寄存器值时候,逐步调试与全速运行得到的值不一样,网上查了好多都没头绪,求教各位是什么原因,代码如下:
u32 READ_Att7022(u8 Address)
{
        u8 i, bTemp;
        u32 dwData;

        SPI_CS_HIGH();
        SPI_CLK_LOW();
        SPI_CS_LOW();    // 开启SPI传输
        bTemp = 0x80;
        for(i=0; i<8; i++)   //Write the Address
        {
                SPI_CLK_HIGH();
                               
                if(Address & bTemp)
                                {
                   SPI_DI_HIGH();
                                }
                else
                     SPI_DI_LOW();
                bTemp >>= 1;
                                delay_us(1) ;
                SPI_CLK_LOW();
                                delay_us(1) ;
        }
        delay_us(3);

        dwData = 0x00000000;//Read 24bit
        for(i=0; i<24; i++)
        {
                dwData <<= 1;
                SPI_CLK_HIGH();
               // Delay_us(3);
                if (RDSPIData)
                {
                      dwData |= 1;
                }
                else
                        ;
                    //        Delay_us(1);
                SPI_CLK_LOW();
                                delay_us(1);
        }
        SPI_CS_HIGH();          //关闭SPI传输
        delay_us(2);
        return dwData;
}


#define SPI_CS_HIGH()          GPIO_SetBits(GPIOE, GPIO_Pin_15)
#define SPI_DI_HIGH()    GPIO_SetBits(GPIOB, GPIO_Pin_15)
#define SPI_DO_HIGH()    GPIO_SetBits(GPIOB, GPIO_Pin_14)
#define SPI_CLK_HIGH()   GPIO_SetBits(GPIOB, GPIO_Pin_13)

#define SPI_CS_LOW()         GPIO_ResetBits(GPIOE, GPIO_Pin_15)
#define SPI_DI_LOW()    GPIO_ResetBits(GPIOB, GPIO_Pin_15)
#define SPI_DO_LOW()    GPIO_ResetBits(GPIOB, GPIO_Pin_14)
#define SPI_CLK_LOW()   GPIO_ResetBits(GPIOB, GPIO_Pin_13)   //对应ATT7022上的管脚

#define RDSPIData   GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)//读数据


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

42

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-6-25
在线时间
0 小时
发表于 2020-5-8 14:52:23 | 显示全部楼层
帮顶,懂的坛友可以帮忙解答一下
回复

使用道具 举报

0

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2020-5-2
在线时间
0 小时
发表于 2020-5-8 16:27:32 | 显示全部楼层
虽然我不懂,但还是帮顶!
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-5-8 16:33:36 | 显示全部楼层
只写一个读函数不能确定问题,因为7022计量芯片需要配置的寄存器很多
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 06:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表