硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3551|回复: 3
收起左侧

[有问必答] 关于AD7606,请教个问题。

[复制链接]

6

主题

40

回帖

58

积分

初级会员

积分
58
发表于 2018-10-23 13:34:26 | 显示全部楼层 |阅读模式
uint16_t AD7606_Read(void)
{
        uint16_t read;
        while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
        SPI_I2S_SendData(SPI1, 0);
        while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
        read = SPI_I2S_ReceiveData(SPI1);
        return read;
}

1、在使用SPI读取AD7606的数据时,每次都要先发送SPI_I2S_SendData,再读取数据,最少连续8次才把数据全部读出来,有没有更有效率的办法?

2、把busy信号触发中断,再使用SPI读取数据,怎么安排任务比较好?直接在中断服务程序里面读取可行吗?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2018-10-23 18:46:01 | 显示全部楼层
1、改成下面的读方式,速度快些
static U8 Send (U8 outb)
{
        /* 通过SPI接口读写一个字节 */
        SPI_SelectHard->DR = outb;

        /* 等待数据接收完毕 */
        while (!(SPI_SelectHard->SR & RXNE));
        return (SPI_SelectHard->DR);
}

2、如果频率低,直接任务里面周期读取即可,如果频率高,要优先测试下读取这么一轮8个通道需要多少时间。
回复

使用道具 举报

6

主题

40

回帖

58

积分

初级会员

积分
58
 楼主| 发表于 2018-10-23 18:54:32 | 显示全部楼层
eric2013 发表于 2018-10-23 18:46
1、改成下面的读方式,速度快些
static U8 Send (U8 outb)
{

谢谢硬汉兄  
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2018-10-24 03:27:20 | 显示全部楼层

后面还有什么疑问,随时发帖交流
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-17 16:35 , Processed in 0.038740 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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