您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]bf592通过spi连接ADC,想采集数据,画... 
本帖共有788个阅读者
发表帖子 发表投票 回复主题
[求助]bf592通过spi连接ADC,想采集数据,画了个下面的这个流程图,不知道对不对?
下划线(论坛新手)
下划线
头衔:社区公民
帮派:无帮无派
帖数:12
金钱:233
积分:19
注册时间:2013/9/2
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]bf592通过spi连接ADC,想采集数据,画了个下面的这个流程图,不知道对不对?
想用bf592通过spi连接ADC,然后将采集到的数据通过urat口传输到地面,中间有个子程序,让timer0和timer1中间隔了一个延时使能他们,从而产生不同相位的方波。。所以画了这个流程图,不知道对不对,哪里不合适。。


上传的图片
  201531021165187.jpg [ 163.37 KB 500×888 ] (缩略时请点击查看原图)

 


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/3/10 21:17:43
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

看上去没有问题,你注意一下两个定时器之间的协调,不然会有一个定时器进不去中断。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/3/10 22:35:12
下划线(论坛新手)
下划线
头衔:社区公民
帮派:无帮无派
帖数:12
金钱:233
积分:19
注册时间:2013/9/2
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

定时器0和定时器1的程序,我写成这样了。。我够估摸着实现不了吧。。感觉延迟,不能使他们两个相位不同?

Set_PLL(16,4);    //内核时钟:25MHz*16=400MHz,系统时钟:400MHz/4=100MHz



Init_gpio();          //初始化GPIO口



Init_Timers0(100);  //初始化定时器0, 10kHz,周期100us



Init_Timers1(100);  //初始化定时器1, 10kHz,周期100us



Enable_Timers0();   //使能定时器0



Delay(3300);    
//延迟33us



Enable_Timers1();   //使能定时器1



while(1);           //无限循环


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/3/10 22:41:15
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

其实你可以用一个定时器,做一个延时函数,然后用这个延时函数精确定时。

你用多少,就调用延时多长时间发送,没必要非要两个。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/3/10 22:53:02
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

给你一个定义1uS延时函数参考的代码:

/********************************************************
*
*   北京四维卓信电子有限公司
*   http://www.openadsp.com
*
*  【OpenADSP开源社区】
* http://www.openadsp.com/bbs/
*
********************************************************/
#include <cdefBF592-A.h>
#include <ccblkfn.h>
#include <sys\exception.h>
#include "timer0.h"
int time_num = 0;
EX_INTERRUPT_HANDLER(Timer0_ISR);
/*************************************
** 函数名称:Init_Timers0           **
** 函数功能:Timers0初始化          **
** 函数参数:timer_num 定时的周期   **
** 返回参数:无                     **
*************************************/
void Init_Timers0(int timer_num)
{
*pTIMER0_CONFIG = 0x0059;         //配置成PWM模式,TMR0脚不输出
*pTIMER0_WIDTH = 0xaaaa;           //脉宽为0xaaaa
*pTIMER0_PERIOD = timer_num*100;  //定时的时间是timer_num uS
}
/*************************************
** 函数名称:Enable_Timers0         **
** 函数功能:使能Timers0            **
** 函数参数:无                     **
** 返回参数:无                     **
*************************************/
void Enable_Timers0(void)
{
*pTIMER_ENABLE = 0x0001;
}
/*************************************
** 函数名称:Disable_Timers0         **
** 函数功能:关闭Timers0            **
** 函数参数:无                     **
** 返回参数:无                     **
*************************************/
void Disable_Timers0(void)
{
*pTIMER_DISABLE = 0x0001;
time_num = 0;
}
/*************************************
** 函数名称:Init_Timer0_Interrupts **
** 函数功能:初始化Timers0 中断     **
** 函数参数:无                     **
** 返回参数:无                     **
*************************************/
void Init_Timer0_Interrupts(void)
{
register_handler(ik_ivg11, Timer0_ISR); //注册中断等级为11,标识符为TIMER0_ISR
*pSIC_IAR2 &=~0x0f000;                  //配置中断等级数据为4
*pSIC_IAR2 |=0x04000;                   //配置中断等级数据为4
*pSIC_IMASK0 |=IRQ_TIMER0;              //打开TIMER0中断
}
/************************************************
** 函数名称:EX_INTERRUPT_HANDLER(Timer0_ISR)****
** 函数功能:Timers0 服务函数                  **
** 函数参数:Timer0_ISR                        **
** 返回参数:无                                **
************************************************/
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
*pTIMER_STATUS = 0x0001;  //清除定时器中断标志
time_num++;
}

/*************************************
** 函数名称:Delay                  **
** 函数功能:延时函数               **
** 函数参数:t                      **
** 返回参数:无                     **
*************************************/
void Delayus(int t) //延时t*80uS
{
Enable_Timers0();
while(!(time_num ==t));
Disable_Timers0();
}



这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/3/10 23:00:22
下划线(论坛新手)
下划线
头衔:社区公民
帮派:无帮无派
帖数:12
金钱:233
积分:19
注册时间:2013/9/2
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
好的。。谢谢

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/3/11 11:59:34
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.160119 Call, 1 Queries, Processed in 0.016113 second(s),