当前位置:  编程技术>移动开发
本页文章导读:
    ▪Learning ADSP-TS201系列-Flag Pins按键跟LED灯        Learning ADSP-TS201系列--Flag Pins按键和LED灯 原创作品,转载请注明原作者及地址! by 飞鸿惊雪 http://blog.csdn.net/niyufeng Learning ADSP-TS201系列--索引 1 Learning ADSP-TS201系列--重要参考 2 Learning.........
    ▪ <程序猿-困难历程>——序        <程序猿--艰难历程>——序序~~~  夜深人静,难以入眠!口袋中抽出一支烟儿,刺激下敏感的神经,完了开始书写俺的博客历程…… 很久没有在这里写东西了,并不是说最近手一直闲着.........
    ▪ XBMC + Debian + Rasberry Pi = 半个小米匣子       XBMC + Debian + Rasberry Pi = 半个小米盒子               去年年末最关注的小米盒子,基于Android 4.0的家庭娱乐核心。可惜,因为种种原因这个产品夭折了。                后来得.........

[1]Learning ADSP-TS201系列-Flag Pins按键跟LED灯
    来源: 互联网  发布时间: 2014-02-18
Learning ADSP-TS201系列--Flag Pins按键和LED灯


原创作品,转载请注明原作者及地址!

by 飞鸿惊雪

http://blog.csdn.net/niyufeng




Learning ADSP-TS201系列--索引

1 Learning ADSP-TS201系列--重要参考

2 Learning ADSP-TS201系列--EZ-KIT Lite评估板硬件资源

3 Learning ADSP-TS201系列--Flag Pins按键和LED灯






Learning ADSP-TS201系列--Flag Pins按键和LED灯

好啦,正是开始这个《Learning ADSP-TS201》系列专题。

TS201这款DSP包含了好些硬件资源,具有突出的数据处理能力,其中的重点和难点就是DMA,Link Port以及和他们相联系的中断,还有就是多DSP的MultiProcessor!当然,和ARM外设的控制相比,这些都是小菜一碟啦~


所以,我们由易到难,先把简单的Flag Pins,Interrupt Pins,Timer,SDRAM解决掉,然后再专攻DMA,MultiProcessor,Link Port,最后在研究FLASH MEMORY,把完成的程序代码固化到Flash中然后直接Boot,而不是用仿真器下载程序。


1 电路中的Flag Pins

EZ-KIT Lite评估板上每个DSP都有4个Flag Pins,这是一种可以控制方向(input\output)的管脚。

在评估板上这些管脚有2个接Button按钮,有2个接LED,他们在电路板上的分布如下图,我也标注了DSP A和B:







在上面图中,我已经把按键和LED灯实际名称如(如LED4,SW9)和DSP上的名称(如flag2,flag0)都对应起来,下面这张截图简单介绍了这些Flag Pins的作用:

也就是说,每片DSP上的Flag0和Flag1作为按键Button输入,而Flag2和Flag3作为LED输出。




这个截图也把另两个按键SW4和SW5放上来了,呵呵,这将是下篇文章要介绍的内容啦,中断!





1.1 Flag0和Flag1作为按键

Flag0和Flag1作为按键,当她们初始化为输入后,在没有按下时为低电平(注意中间有个反相器),而按下按键时为高电平。

所以SQSTAT寄存器在按下按键时FLG0或FLG1才为1,这样可以使用判断语句来查询状态,判断是否按下。








1.2 Flag2和Flag3作为LED


Flag2和Flag3作为LED,当她们初始化为输出后,FLAGREG中的FLAG2_OUT或FLAG3_OUT位,对其置位对应的LED才亮,而清零则LED熄灭。










2 Flag Pins的寄存器


四个FLGA3-0管脚,都可配置为输入或输出,系统上电后默认是输入;

1 FLAGREG:(FLAGx_EN =0)输入,(FLAGx_EN =1)输出

2 输出时:FLAGREG中的FLAGx_OUT位,对其置位或清零

3 输入时:SQSTAT中的FLGx位,查看状态。或者使用条件指令中的FLAGx_IN标志。







2.1 FLAGREG寄存器






2.2 SQSTAT寄存器中的FLGx位







3 编程实验


这个程序很简单,第一个实验,直接两个LED灯交替闪烁;

而第二个实验,两个LED灯根据按键Button状态进行交替闪烁,按键的状态判断也只是简单滴利用一个延时~~

程序里面有详细的注释,可以轻易的明白。

如果想用第一个实验,只要把#if 0改为#if 1即可,这样就编译的是实验一的程序而不是实验二了 :)


/*
 *
 * 用于测试Flag Pins
 * flag0,flag1连接按键,应该初始化为输入模式
 * flag2,flag3连接led灯,应该初始化为输出模式
 *
 */


#include<stdio.h>
#include<builtins.h>
#include<sysreg.h>
#include<defts201.h>


#define SET_FLAG_OUT(x) __builtin_sysreg_write(__FLAGREGST, (x) );
#define CLR_FLAG_OUT(x) __builtin_sysreg_write(__FLAGREGCL, (~(x)) );



int main( void )
{
	int i;
	//将FLAG2, FLAG3设为输出模式,用于LED闪烁
	__builtin_sysreg_write(__FLAGREGST, FLAGREG_FLAG2_EN | FLAGREG_FLAG3_EN);
	//将FLAG0, FLAG1设为输入模式,用于按键
	__builtin_sysreg_write(__FLAGREGCL, ~( FLAGREG_FLAG0_EN|FLAGREG_FLAG1_EN) );
	
	
#if 0	/********* 第一个实验,直接两个LED灯交替闪烁 **********/
	while(1) {
		SET_FLAG_OUT(FLAGREG_FLAG2_OUT);
		CLR_FLAG_OUT(FLAGREG_FLAG3_OUT);
		for(i=0; i<8000000; i++);
		SET_FLAG_OUT(FLAGREG_FLAG3_OUT);
		CLR_FLAG_OUT(FLAGREG_FLAG2_OUT);
		for(i=0; i<8000000; i++);
	}
#else

  	/********* 第二个实验,两个LED灯根据按键状态进行交替闪烁 *********/

	static int button0=0, button1=0;
	static int led0=0, led1=0;
	int sqstat=0;
	
	while(1){
		//如果button0按下,反转button0状态
		sqstat = __builtin_sysreg_read(__SQSTAT);
		if( sqstat & ( 1<<SQSTAT_FLG_P) ){	//按下按键为高电平
			for(i=0; i<800000; i++);
			sqstat = __builtin_sysreg_read(__SQSTAT);
			if( sqstat & ( 1<<SQSTAT_FLG_P) ) button0 = ! button0;
		}
		
		//如果button1按下,反转button1状态
		sqstat = __builtin_sysreg_read(__SQSTAT);
		if( sqstat & ( 2<<SQSTAT_FLG_P) ){
			for(i=0; i<800000; i++);
			sqstat = __builtin_sysreg_read(__SQSTAT);
			if(sqstat & ( 2<<SQSTAT_FLG_P) ) button1 = ! button1;
		}
		
		//根据button0状态,点亮/熄灭LED2
		if(button0 == 0){
			CLR_FLAG_OUT(FLAGREG_FLAG2_OUT);
		} else {
			SET_FLAG_OUT(FLAGREG_FLAG2_OUT);
		}
		
		//根据button1状态,点亮/熄灭LED3
		if(button1 == 0){
			CLR_FLAG_OUT(FLAGREG_FLAG3_OUT);
		} else {
			SET_FLAG_OUT(FLAGREG_FLAG3_OUT);
		}
		
		for(i=0; i<800000; i++);
	}
	
#endif

}



     


在放两个图吧,虽然不是这个实验的,但是大体这么个意思。。。
















    
[2] <程序猿-困难历程>——序
    来源: 互联网  发布时间: 2014-02-18
<程序猿--艰难历程>——序

序~~~  夜深人静,难以入眠!口袋中抽出一支烟儿,刺激下敏感的神经,完了开始书写俺的博客历程……


很久没有在这里写东西了,并不是说最近手一直闲着…呵呵 项目结束到现在已经有一段时间了,因为关于软件开发方面的知识,了解的不是很多,所以趁着这个机会,研究了大量的陌生而又感兴趣的技术,这段过程并不轻松! 平时都记录在自己的私藏中.... 感觉很不好,东西只有自己知道,记录的很多,不拿出来共享,到底是否正确,或者是否高效,还是个谜! 所以还是写在博客,与大家分享的同时,发现错误和不足,也让自己知道正确、更高效的技能,使自己成长地更快些~~


文章背景:

最近在研究Android的官方API,虽然都是英文的,但看习惯了,发现有很多细节的知识,在doc中都讲的很清楚,也比较全面;不足的地方,由于涉及内容的多样复杂性,也会遇到一些阅览的麻烦。 总之,很多时候,学会看官方doc,比老在网上,看一点东一点西拼凑的,效果要好很多,最重要的是明白以后,更能节省宝贵的时间!

比如Android的编译、打包、签名、发布等知识,最开始听到这些NB的名词时,很想自己动手操作一遍;当时不知道去看doc,就去百度、google呀的,很多文章或者论坛,对这一块的提问、解答,都是些遇到实际问题的片段;真的想去搞懂整个流程、并实际操作,如果没有有经验的人带授的话,确实很麻烦。比如,可能只用Eclipse去编译运行开发好的APP,实际上这中间的Processer,对开发者来说,都已经被Eclipse封装好,隐藏了过程;看似用IDE开发Android,很简单方便。。实际带来的后果,我们被误解了....总觉得打包签名的过程很神秘,想自己做签名,却不知从何下手!

带着这些困惑,我想挤出更多的时间,去研究下官方API,并养成习惯!到这里,大家不要误会了,我可不是要去做一个API翻译者,只是想更系统、高效地学习一门技术!





1楼Wentasy4天前 19:52API好啊!

    
[3] XBMC + Debian + Rasberry Pi = 半个小米匣子
    来源: 互联网  发布时间: 2014-02-18
XBMC + Debian + Rasberry Pi = 半个小米盒子

               去年年末最关注的小米盒子,基于Android 4.0的家庭娱乐核心。可惜,因为种种原因这个产品夭折了。

                后来得手一个开源硬件Rasberry PI , 基于ARM的架构, CPU主频700MHz, 内存512M ,usb供电, 有USB, GPIO, 网络插口。

                最优秀的, 这个硬件对视频播放的支持很完美。因此拿他来做家庭娱乐中端的也不少。

 

               一般来说两个做法, 一个是XBMC + Linux系列, 一个是 XBMC + Android4.0系列

               Rasberry Pi 我刷过官方的Android 4.0的ROM ,可以跑, 但是很卡, 硬件加速的缺失需要弥补。另外, Android 4.0的内核也需要做一定的定制。  小米这方面应该会做的更好。

              另外一个方法, 因为对硬件要求不高, 更简单一点。

              XBMC官方还专门对Rasberry Pi的安装有以下的帮助文档:

                    http://wiki.xbmc.org/index.php?title=Raspberry_Pi/FAQ#Installing_XBMC_on_the_Raspberry_Pi

             一般来说 有 OpenELEC, XBMC LIVE两个常见的quick install rom

             针对Rasberry Pi其实还有个更简单的install工具Raspbmc:

                     http://www.raspbmc.com/about/

            直接在win系统上,用帮助工具就能把完整的rom烧到SD卡上

           

             下面是效果图

 





       关于遥控器, 如果用红外的需要买个红外传感器。 基于wifi的Android App就很好用。 但是注意, 新版XBMC的API换成json了, 因此要用最新型的App:

       http://yatse.leetzone.org/redmine/projects/androidwidget

     

      最后谈一下成本, Rasberry Pi的板子 + hdmi连接线 + SD卡一共320左右

      软件全部开源,免费。

      Ras Pi的电路图也是开源的, 如果包装成产品, 批量生产的话,成本不会超过200。 南方也确实也有很多基于这个的小电子厂。


      不过如果硬件支持, 能够基于Android系统的话会更好, Android系统的重力感应, 丰富的app, 简易的可定制 , 都是不可比拟的。

    

补充一下,Ras Pi可以超频,参见以下, 不过我试过,差距不会很大

http://kitsunelab.com/blog/2012/07/26/%E6%95%99%E7%A8%8Braspberry-pi%E8%B6%85%E9%A2%91/


以上@蒋彪

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
CSS属性参考手册 iis7站长之家
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3