OpenEdv-开源电子网

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

求stm32f407或103+AD7606 用fsmc8通道同步采集电压的程序

[复制链接]

12

主题

33

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1330
金钱
1330
注册时间
2020-1-10
在线时间
131 小时
发表于 2020-6-16 21:40:55 | 显示全部楼层 |阅读模式
20金钱
看论坛之前的帖子,很多大佬103和407的都调出来了,我在这卡了好几天,求大佬给个程序。

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

使用道具 举报

6

主题

413

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2628
金钱
2628
注册时间
2019-8-14
在线时间
409 小时
发表于 2020-6-17 15:52:09 | 显示全部楼层
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-9-8
在线时间
0 小时
发表于 2020-9-8 11:37:31 | 显示全部楼层

你跑出来没,同求AD7606的程序,想跑在正点原子407探索版上,2937740859@qq.com
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-8-17
在线时间
12 小时
发表于 2022-3-28 14:20:29 | 显示全部楼层
AD7606.C

#include <stm32f10x.h>
#include "Delay.h"
#include "AD7606.h"  // 这个 AD7606.c 文件已修改, 与AD7606.h保持一致,原版保存在同一目录下,文件名加长说明。
#include "lze_lcd.h"

extern u8 IO_TAG;       
//-----------------------------------------------------------------
// 初始化程序区
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// void GPIO_AD7606_Configuration(void)
//-----------------------------------------------------------------
//
// 函数功能: AD7606引脚配置函数
// 入口参数: 无
// 返回参数: 无
// 全局变量: 无
// 调用模块: RCC_APB2PeriphClockCmd(); GPIO_Init();
// 注意事项: 用GPIO驱动方式和FSMC驱动方式下的引脚配置不一样
//                       
//-----------------------------------------------------------------
void GPIO_AD7606_Configuration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        // 使能IO口时钟
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA |        RCC_APB2Periph_GPIOB |
                                                                                                        RCC_APB2Periph_GPIOC , ENABLE);  
        GPIO_DeInit(GPIOA);//将GPIOx外设寄存器初始化为默认复位值
        GPIO_DeInit(GPIOB);
        GPIO_DeInit(GPIOC);
//        GPIO_DeInit(GPIOD);
//        GPIO_DeInit(GPIOE);
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        // AD7606
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        // 控制线配置
        //          CS_N        RD/SCLK        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 ;                                                       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                 
        GPIO_Init(GPIOA, &GPIO_InitStructure);
               
        //                 FRSTDATA     BUSY  
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5         ;                                                       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING ;                                                 
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
       
//#define clk_Set                           GPIO_SetBits  (GPIOA,GPIO_Pin_7)
//#define clk_Reset                   GPIO_ResetBits(GPIOA,GPIO_Pin_7)

//#define cs_Set                                   GPIO_SetBits  (GPIOA,GPIO_Pin_6)
//#define cs_Reset                           GPIO_ResetBits(GPIOA,GPIO_Pin_6)

//#define busy_Set                           GPIO_SetBits  (GPIOA,GPIO_Pin_5)
//#define busy_Reset                   GPIO_ResetBits(GPIOA,GPIO_Pin_5)                          
                                               
//#define frstdata_Set           GPIO_SetBits  (GPIOA,GPIO_Pin_4)
//#define frstdata_Reset  GPIO_ResetBits(GPIOA,GPIO_Pin_4)                                               
                                               
                                               
        //        rst convstB convstA STby
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8| GPIO_Pin_9 |  GPIO_Pin_10 |  GPIO_Pin_11;                                                               
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                 
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
//#define rst_Set                            GPIO_SetBits  (GPIOB,GPIO_Pin_8)  //#define rst_Set                            GPIO_SetBits  (GPIOC,GPIO_Pin_8)
//#define rst_Reset                    GPIO_ResetBits(GPIOB,GPIO_Pin_8)  //#define rst_Reset                    GPIO_ResetBits(GPIOC,GPIO_Pin_8)       
       
//#define convstB_Set           GPIO_SetBits  (GPIOB,GPIO_Pin_9)   //#define convstB_Set           GPIO_SetBits  (GPIOC,GPIO_Pin_9)
//#define convstB_Reset   GPIO_ResetBits(GPIOB,GPIO_Pin_9)  //#define convstB_Reset   GPIO_ResetBits(GPIOC,GPIO_Pin_9)

//#define convstA_Set           GPIO_SetBits  (GPIOB,GPIO_Pin_10)
//#define convstA_Reset   GPIO_ResetBits(GPIOB,GPIO_Pin_10)

//#define STby_Set               GPIO_SetBits(GPIOB,GPIO_Pin_11)


        //            OS10              OS11   OS12
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_15 |  GPIO_Pin_14 | GPIO_Pin_13          ;//  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                 
        GPIO_Init(GPIOB, &GPIO_InitStructure);   //         GPIO_Init(GPIOC, &GPIO_InitStructure);
       
       
//#define OS10_Set               GPIO_SetBits  (GPIOB,GPIO_Pin_15)
//#define OS10_Reset      GPIO_ResetBits(GPIOB,GPIO_Pin_15)

//#define OS11_Set               GPIO_SetBits  (GPIOB,GPIO_Pin_14)
//#define OS11_Reset      GPIO_ResetBits(GPIOB,GPIO_Pin_14)

//#define OS12_Set                            GPIO_SetBits  (GPIOB,GPIO_Pin_13)
//#define OS12_Reset                   GPIO_ResetBits(GPIOB,GPIO_Pin_13)

                              //   上计11根接线

        //数据线配置(1)                           
        // DoutA                                  DB7 -->GPIOB,GPIO_Pin_0               
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;                                                               
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;                                                 
        GPIO_Init(GPIOB, &GPIO_InitStructure); //         GPIO_Init(GPIOC, &GPIO_InitStructure);
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                                 //LED13-->PC13  端口配置  板载 LED灯
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOA.8
GPIO_SetBits(GPIOC,GPIO_Pin_13);               
}

//-----------------------------------------------------------------
// void AD7606_Init(void)
//-----------------------------------------------------------------
//
// 函数功能: AD7606初始化函数
// 入口参数: 无
// 返回参数: 无
// 全局变量: 无
// 调用模块:   
// 注意事项: 无
//-----------------------------------------------------------------
void AD7606_Init(void)
{
        convstA_Set;
        convstB_Set;
        delay_ms(1);
        STby_Set;
        clk_Set;
        cs_Set;       
  OS10_Reset;
        OS11_Reset;
        OS12_Reset;
        AD7606_reset();  
        delay_ms(1);
        AD7606_startconvst();       
}

/*   * 名称:AD7606_startconvst()  * 功能:启动转换  */  
void AD7606_startconvst(void)
{  
        convstA_Reset;       
        convstB_Reset;       
        delay_us (1);
        convstA_Set;
        convstB_Set;
}
  
/*   * 名称:AD7606_reset()  * 功能:复位模块  */
void AD7606_reset(void)
{
        rst_Reset;
        delay_us (1);
        rst_Set;
        delay_us(1);
        rst_Reset;
}  

/*
* 名称:AD7606_read_data()
* 功能:读取数据
* 返回值:返回一个结构体指针,该指针为指向结构体数组的首地址  
*/

void AD7606_read_data(s16 * DB_data)
{  
        u8 i,j;        
        for(i=0;i<8;i++)  
        {
                u16 DB_data1 = 0;
                cs_Reset;
          delay_us(1);       
                for(j=0;j<16;j++)
                {               
                clk_Reset;
                delay_us(1);                       
                DB_data1 = ((u16)(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0))<< (15-j)) + DB_data1 ;
          clk_Set;
                delay_us(1);                               
                }               
                cs_Set;       
                DB_data[i] = (u16)DB_data1;
        }       
}
回复

使用道具 举报

1

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2015-12-9
在线时间
16 小时
发表于 2024-4-28 00:18:40 | 显示全部楼层
哪里有程序
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-15 04:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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