2012年8月20日
摘要: http://blog.csdn.net/juana1/article/details/6867829最近做的spi flash,本打算弄个文件系统,由于之前用过了JFFS、YAFFS和TrueFFS,代码量都相当的大,这次想找款代码量不那么吓人的,学习一下,听说配置会相对复杂一些。选来选去,最终选定了FatFS,代码量足够的小,最新的R0.09版本只有1个.c文件(当然,还有一个底层的要自己写,option文件夹里的无视),老点版本就更小了。而且更新很频繁,用户量也够大,就选定它了。尽管最后由于硬件和项目原因未能实际的移植它到vxWorks,但学过的还是要记录下。 在这里http://elm 阅读全文
posted @ 2012-08-20 10:36 啊德Blog 阅读(9802) 评论(0) 推荐(2)
摘要: #ifndef TERASIC_INCLUDES_H_#define TERASIC_INCLUDES_H_#include <stdio.h>#include <stdlib.h> // malloc, free#include <string.h>#include <stddef.h>#include <unistd.h> // usleep (unix standard?)#include "sys/alt_flash.h"#include "sys/alt_flash_types.h"# 阅读全文
posted @ 2012-08-20 00:32 啊德Blog 阅读(2513) 评论(0) 推荐(0)
  2012年8月19日
摘要: 在c语言中,我们经常面临需要将字符串转换为整型,以及将整型转化为字符串的问题。将字符串转换为整数的函数在stdlib.h中定义:int atoi(const char *str);atoi函数会跳过str中前面出现的空格,从第一个数字开始转换。下面是我的实现:[cpp] view plaincopyprint?intmy_atoi(constchar*str){//argumentcheckfirst! assert(NULL!=str);intret=0,sign=1;//skiptabandspace for(;*str==''||*str=='\t';st 阅读全文
posted @ 2012-08-19 15:51 啊德Blog 阅读(69407) 评论(0) 推荐(3)
摘要: SD卡调试关键点: SD调试注意点1.上电时要延时足够长的时间给SD卡一个准备过程,在我的程序里是5秒,根据不同的卡设置不同的延时时间。SD卡初始化第一步在发送CMD命令之前,在片选有效的情况下首先要发送至少74个时钟,否则将有可能出现SD卡不能初始化的问题。2.SD卡发送复位命令CMD0后,要发送版本查询命令CMD8,返回状态一般分两种,若返回0x01表示此SD卡接受CMD8,也就是说此SD卡支持版本2;若返回0x05则表示此SD卡支持版本1。因为不同版本的SD卡操作要求有不一样的地方,所以务必查询SD卡的版本号,否则也会出现SD卡无法正常工作的问题。3.理论上要求发送CMD58获得SD卡电 阅读全文
posted @ 2012-08-19 15:24 啊德Blog 阅读(665) 评论(0) 推荐(0)
摘要: 指针相关运用转自:http://blog.csdn.net/snowq/archive/2008/01/17/2050129.aspx最近写了一个小程序,遇到一点小问题,是关于指向字符串的指针的。由此一发不可收拾,好奇心驱使我决定研究一下指针的初始化和赋值规则。略有所得之后,执笔记下,以备后用。1、指针的初始化初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单:int *p;int a=25;int b[10];int *m=&a;int *n=b;int *r=&b[0];指针的定义如上所示,以*打头的变量代表该变量为指针 阅读全文
posted @ 2012-08-19 15:22 啊德Blog 阅读(190) 评论(0) 推荐(0)
摘要: 字符串 转换大全c语言字符串 数字转换函数大全最近学数据结构老是做实验常用到字符串和数字的转换想找却发现网上的资料太散所以搜集整理一下 方便以后再用atof(将字符串转换成浮点型数)atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)strtod(将字符串转换成浮点数)strtol(将字符串转换成长整型数)strtoul(将字符串转换成无符号长整型数)toascii(将整型数转换成合法的ASCII 码字符)toupper(将小写字母转换成大写字母)tolower(将大写字母转换成小写字母) atof(将字符串转换成浮点型数)相关函数 atoi,atol,strtod,strtol 阅读全文
posted @ 2012-08-19 15:13 啊德Blog 阅读(389) 评论(0) 推荐(0)
摘要: 详解C中volatile关键字volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:shortflag;voidtest(){do1();while(flag==0);do2();}这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由 阅读全文
posted @ 2012-08-19 15:08 啊德Blog 阅读(297) 评论(0) 推荐(0)
摘要: 单片机实现软件复位(软复位)的方法及讨论(转)http://hi.baidu.com/wxdpj/blog/item/9707c7823631cdab0cf4d2a7.html单片机软复位有什么好的方法?如从机收到复位命令(软件命令),程序怎么使机器复位?虽然要使软件始终处于可控状态,最好不要用"复位",因为复位是纯硬件过程,软件是不可控的.但是我们还是要讨论方法,一般流传的方法如下:1、放狗;2、((void(code*)(void))0x0000)();3、用单片机一个引脚控制点一下RSTRST;4、用单片机一个引脚控制重新加电;5、用单片机自带的软件复位指令或内狗指令 阅读全文
posted @ 2012-08-19 15:03 啊德Blog 阅读(8656) 评论(0) 推荐(0)
摘要: 复位电路的几种设计http://hi.baidu.com/wxdpj/blog/item/bde5b97fe948d50e28388ac6.html复位源是导致单片机内部复位操作的源泉,大致可分为七种:上电复位(POR)﹑人工复位(MRST)﹑电源欠电压复位(LVR)﹑看门狗复位(WDR)﹑软件复位(SWR)﹑软硬件复位(SHR)﹑和非法地址复位(IAR)。一﹑上电复位电路上电复位的实质是上电延时复位,也就是在上电延时期间把CPU锁定在复位状态上,就是为了弥补由于电源滤波电容存在使单片机电源由低到高逐渐上升的时间。如下图示就是利用RC支路的充电时间而形成的常用的上电复位电路。在每次单片机断电之 阅读全文
posted @ 2012-08-19 14:58 啊德Blog 阅读(6294) 评论(0) 推荐(0)
摘要: data,bdata,idata,pdata,xdata,code存储类型与存储区bit是在内部数据存储空间中20H..2FH区域中一个位的地址,或者8051位可寻址SFR的一个位地址。code是在0000H..0FFFFH之间的一个代码地址。data是在0到127之间的一个数据存储器地址,或者在128..255范围内的一个特殊功能寄存器(SFR)地址。idata是0to255范围内的一个idata存储器地址。xdata是0to65535范围内的一个xdata存储器地址。指针类型和存储区的关系详解一、存储类型与存储区关系data--->可寻址片内rambdata--->可位寻址的片 阅读全文
posted @ 2012-08-19 14:55 啊德Blog 阅读(6065) 评论(0) 推荐(0)
摘要: 1) class1,class3,class9:SPI模式不支持!2) 继SD1.1之后又推出了SD2.0,主要特性是支持更大容量。SD1.1中卡容量存放于CSD寄存器中, 而由于其规范中相关域的值较小,固最大只能表示2G地址。随着Nand容量的大大提高, SD1.1已经不适合潮流,因而推出了SD2.0。 初始化流程大同小义,只需要CMD0之后再加上CMD8命令的识别。SD1.1不支持CMD8, 而SD2.0的CMD8能读到卡的接口信息。如果卡响应CMD8为无效命令,则走SD1.1的流程, 可能是SD1.1或MMC。如CMD8响应正确,则很可能是SD2.0了。3) SD卡具有安全加密功能,内置 阅读全文
posted @ 2012-08-19 11:36 啊德Blog 阅读(745) 评论(0) 推荐(0)
  2012年8月18日
摘要: #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 sbit LED1 = P2^0; sbit LED = P2^1; //定义LED灯,通过LED显示调光效果 sbit LED2 = P2^2; unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms unsigned char PWM_ON ;//定义高电平时间 /******************************************************************/ /* 延时函数 阅读全文
posted @ 2012-08-18 17:41 啊德Blog 阅读(8197) 评论(1) 推荐(1)
摘要: FAT文件系统整体概述MBR:0扇区,分区记录,不一定每个磁盘都有MBR.DBR:可能位于0扇区,若不在0扇区则由MBR计算得到他的位置,以0XEB开始,记录该分区重要参数保留扇区:可能是32个扇区,也有可能不是。第一个FAT表:存储了目录与文件数据的链式存储结构第二个FAT表:作为第一个FAT的备份,防止损坏第二簇:第一个目录所在的簇号,以下顺序是第三簇第四簇第三簇开始:记录了目录和文件数据,存储单位是簇,簇与簇之间不一定联系,链式关系要参照FAT表。。。。。。。。第n簇MBR结构:00020C000B38F8B889000000779F3A0000000000000000000000000 阅读全文
posted @ 2012-08-18 17:39 啊德Blog 阅读(2292) 评论(0) 推荐(0)
摘要: NIOS2下的SDHC调试 本想自己做个简单易用的SPI控制器IPcore挂在NIOS2处理器上,整理半天却发现组件库里有3wire SPI外设,看看软件说明书配置一下也是很easy的,于是放弃了自己DIY组件的打算。 这两天调试了一下,之前用SF-EP1C板调试过2G以下的SD卡。这下面对SDHC卡,由于之前的经验,配合官方又臭又长的2.0的规格书(话说回来,最终帮大忙的还是这个spec,还是很享受那句话“忠于原文”),今天把SDHC的底层驱动函数稍微都整理好了,过阵子可以交给同事继续软件开发工作了。 这个SDHC的调试过程还有那么些讲究,这里特权同学也啰嗦一下,也许能给读者您带来一点灵感。 阅读全文
posted @ 2012-08-18 17:26 啊德Blog 阅读(522) 评论(0) 推荐(0)
摘要: 2012-05-04 11:07【转】SDHC卡驱动及初始化瞎忙了几天终于让4G的SDHC卡在STC90C516的SPI模式下跑了起来,因为当初找资料的时候遇到了太多的困难,最后是在IH YFF的帮助下,看了E文的SD2.0协议才有点小明白的.最初的想法是弄一个数码相框玩玩,试跑了一个A例程,结果没有成功.到网上搜了很多相关的例程,结果发现和A例程的代码大同小异都是针对小于2G的SD卡写的.虽然网上有人说SD卡的协议写得很那个,但是实在没有办法了.后来看了协议才知道那实在是个误解.呵呵.SD卡的协议有V1.0和V2.0之分,A例程和网上流传的各种例程都是V1.0的,而我的SDHC(金士顿4G的 阅读全文
posted @ 2012-08-18 17:20 啊德Blog 阅读(2812) 评论(2) 推荐(1)