OpenEdv-开源电子网

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

第一届“星翼杯”电子创新大赛-DIY寝室防盗系统作品进度【决赛作品】

[复制链接]

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
发表于 2013-3-12 20:10:06 | 显示全部楼层 |阅读模式
在之后的决赛中,我按照评分标准一步步来。最终做出的作品准备是一个防盗系统。
大致功能如下:
    1. 启动警戒模式后,有人接近我的桌子时会有语音警告。
    2. 当有人搬开我的电脑时会响起警报并通过短信发射模块发条短信到我手机上
    3. 一般模式下就检测室内的情况,温度湿度亮度等

尽量做出来吧,最终结果不知道能不能达到预想效果.... 
最近的效果,大家指点指点:

最开始肯定是熟悉板子完成基本功能。

 3.12  展示收到的MiniSTM32开发板  5楼
 3.14   对时钟控制寄存器的分析  8楼
 3.15  跑马灯完成,使用寄存器操作  9楼
 3.18  外部中断完成,用按键控制LED灯  11楼
 3.22  串口1实验完成  14楼
 3.23  定时器实验完成  15楼
 3.27  彩屏测试成功,完成字符串显示,汉字还没有  16楼
 3.28  RTC实验成功  18楼
 3.29  ADC1单通道连续转换测试成功  20楼
 3.29  ADC1多通道扫描模式连续转换测试成功  21楼
 3.30 模拟I2C对24C02进行读写实验成功   22楼 
 3.31  SPI模式读写Flash实验成功  25楼
 4.3  SD卡读写扇区完成  30楼
 4.5  SD卡移植znFAT进行文件级操作,添加字库显示汉字成功  32楼
 4.12  DIY寝室防盗系统基本功能实现  39楼
 4.14  在SD卡上面存状态情况  51楼
 4.17 分享一下目前的程序(在SD卡上的文件进行写数据调试好了)   56楼
 4.18  完成上位机,便于设置系统 57楼 
     
     

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-12 20:38:30 | 显示全部楼层
回复【楼主位】liklon:
---------------------------------
用到GSM模块了,呵呵。
SIM900有带语音合成版本的,你可以学一下,可以实现发短信,语音警告。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-12 20:41:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
呵呵,再去买个GSM模块来练练手,语音我想用其他的
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2012-10-17
在线时间
24 小时
发表于 2013-3-12 22:37:51 | 显示全部楼层
这个检测别人接近你的桌子?难道你室友从你桌子边路过也报警吗?
asdasd?
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-12 23:12:19 | 显示全部楼层
回复【4楼】lxh2626:
---------------------------------
我说过是设定警戒模式后嘛,肯定是寝室的集体出门后启动或者将密码告诉寝室的啊,报警前会提示的,只要输入密码就OK了啊。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-12 23:24:02 | 显示全部楼层

今天收到板子,可以开始做自己的作品了,现在晒晒收到的板子,很不错!期待自己的作品。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-12 23:35:12 | 显示全部楼层
回复【6楼】liklon:
---------------------------------
好好学习一下,期待你们的佳作.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

42

主题

568

帖子

0

精华

高级会员

Rank: 4

积分
783
金钱
783
注册时间
2010-12-19
在线时间
5 小时
发表于 2013-3-13 10:44:27 | 显示全部楼层
既然是比赛,如果能自己做板,就更好了。
一个上蹿下跳的猴子~~~
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-14 17:58:26 | 显示全部楼层
对STM32的学习首先应该是对时钟的配置。还是习惯去分析寄存器。在对寄存器的分析,对STM32的时钟控制有了大致的了解。

我现在只是测试了,系统时钟是来至于PLL输出时钟。主要的配置流程我的理解就是:

1. 外部的高速时钟使能。并等待时钟正常运行
2. 配置几个分频器的分频系数,由于从APB1出去的那个位置有个限制是最大36M。所以将APB1设置为2分频
3. 选择外部高速时钟不分频直接接入PLL
4.在系统时钟改变的时候需要设置FLASH等待周期。默认是0,所以要设置一个等待周期。
5.都配置好了后就使能PLL,然后改变系统时钟的输入。
由于是刚接触肯定是有很多的问题,希望大家指点。



电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-15 18:20:46 | 显示全部楼层
完成了对时钟的配置还有延时函数的编写(使用滴答定时器)。然后就是完成对GPIO的操作。对IO进行位的操作,具体函数是下面两个:
/*     片上位带区,地址映射           */
uint32 BitAddrChange(uint32 Addr,uint8 num)
{
uint32 BitAddr;
BitAddr = 0x42000000 + ((Addr - 0x40000000) << 5) + (num << 2);
return BitAddr;
}

/****************************************
函数功能:单个引脚输出
入口参数:引脚类型,在H文件里定义了输入PA,PB....PE,
          输入引脚的序号
 要输出的数据
出口参数:无
备    注:无
****************************************/
void  GPIOxOutput(uint8 port,uint8 num,uint8 tmp)
{
uint32 Addr = 0,Addrbit = 0;
switch(port)
{
case PA:   Addr = GPIOA_ODR_ADDR; break;
case PB:   Addr = GPIOB_ODR_ADDR; break;
case PC:   Addr = GPIOC_ODR_ADDR; break;
case PD:   Addr = GPIOD_ODR_ADDR; break;
case PE:   Addr = GPIOE_ODR_ADDR; break;
default:   break;
}
Addrbit = BitAddrChange(Addr,num);
*((volatile unsigned long *)(Addrbit)) = tmp;  
}

是对寄存器的操作,完成了时钟,延时,GPIO完成后就对MiniSTM32板子上的两个LED的控制。贴出自己的代码,希望各位大哥能看看,然后指出一些错误,并传授一点经验。




Led.zip

412.31 KB, 下载次数: 510

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-15 18:31:08 | 显示全部楼层
回复【10楼】liklon:
---------------------------------
用我们例程提供的那种方式比较灵活,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-18 14:04:07 | 显示全部楼层
利用PA15引脚的外部中断,同过按键来控制LED灯。搞这个外部中断忒麻烦了,除了配置IO的辅助功能寄存器,还要配置外部中断的一些寄存器,最后还有NVIC里的一些配置。优先级的设置.....这样虽然麻烦但是可以灵活的使用STM32的中断.优先级的配置时候主要就是对抢占优先级和响应优先级还有外部中断优先级的格式配置。根据STM32的中文手册和中断优先级两个文档进行配置。

/**************************************************
函数功能:设置中断优先级组
入口参数:组号
出口参数:无
备    注:有5组(0--4)
          配置SCB->AIRCR的[10:8]位
 0组对应111....4组对应011
 设置是的钥匙为0X05FA0000  
***************************************************/
void  riorityGroup(uint8 Group)
{
uint32 tmp1,tmp2;
tmp1 = (~Group) & 0x07;
tmp1 <<= 8;            //[10:8]
tmp2 = SCB->AIRCR;
tmp2 &= 0x0000f8ff;
tmp2 |= 0x05fa0000;  //加入钥匙
tmp2 |= tmp1;
SCB->AIRCR = tmp2;    //设置分组
}

void  NVIC_Config(uint8 NVIC_PreemptionPriority,uint8 NVIC_SubPriority,uint8 NVIC_Channel,uint8 NVIC_Group)
{
uint8 tmp1,tmp2,tmp3,tmp4;
uint32 tmp;
tmp1 = NVIC_PreemptionPriority << (4 - NVIC_Group); //抢占优先级
tmp2 = NVIC_SubPriority & (0x0f >> NVIC_Group);      //响应优先级
PriorityGroup(NVIC_Group);                         //设置组
tmp1 += tmp2;
tmp = tmp1 & 0x0f;                                        //取四位数
if(NVIC_Channel < 32)
NVIC->ISER[0] |= (1 << NVIC_Channel);
else
   NVIC->ISER[1] |= (1 << (NVIC_Channel - 32));
tmp3 = NVIC_Channel / 4;                            //判断是第几个IPR[tmp3]
tmp4 = (NVIC_Channel % 4) * 8 + 4;                  //偏移量,每个中断对于着8个位,8个位中高四位有效
NVIC->IPR[tmp3] |= (tmp << tmp4);
}



KEY.zip

604.53 KB, 下载次数: 450

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-18 15:22:37 | 显示全部楼层
回复【12楼】liklon:
---------------------------------
顶...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-3-12
在线时间
0 小时
发表于 2013-3-21 00:50:02 | 显示全部楼层
我也来顶一个
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-22 22:12:45 | 显示全部楼层













串口调试助手发送“->现在是什么实验”,然后STM32就会发送“liklon串口实验”,有一个重映像的问题没搞清楚,已经在STM32版块提问了,希望大家帮忙解答。

UART1.zip

521.04 KB, 下载次数: 433

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-23 17:52:12 | 显示全部楼层


对那个影子寄存器还是挺模糊的。还有就是有一位是设置自动重装载预装载允许位,如果APRE=0时,预装载寄存器的内容可以随时传到影子寄存器中,为1时,在每次更新事件时才传入影子寄存器中。我说说我的理解不知道是不是正确的,希望各位指点一点。
在《例说STM32》中写了真正起作用的是影子寄存器,是不是如果APRE=0的时候,在程序执行的任何时候都可以通过改变预装载寄存器的内容来修改影子寄存器的值从而改变定时的时间。而当APRE=1时,只有在更新事件产生时才能修改预装载寄存器的值来改变影子寄存器的值从而修改定时的时间。这个理解不知道对不对,求解答。

TIM2.zip

614.73 KB, 下载次数: 400

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-27 00:26:37 | 显示全部楼层


完成字符串的现实,汉字还没有。
在做彩屏期间先读取芯片型号来确定读写函数是否正确,刚开始读出来的都是0XFFFF,经过调试之后发现是在读数据引脚上升沿之间应该加几微妙的延时,在上升沿后得立即读取数据如果上升沿后加延时会造成读取错误。初始化函数是参考光盘里的文档来配置的。

TFT.zip

764.33 KB, 下载次数: 470

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-27 09:33:16 | 显示全部楼层
回复【17楼】liklon:
---------------------------------
怎么你的照片拍出来这么怪...
拉长了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-28 00:38:00 | 显示全部楼层
RTC虽然有时钟芯片一样的功能,但是配置时间,获取时间忒麻烦了。底层函数得写好多。对于Mini板上的例程里的获取编译时间函数是第一次见到额,挺有用的。RTC就是一个32位的计数器,经过一些分频后计数脉冲频率为1HZ,就是1S钟。这样可以计时136年左右。然后设置时间就是把从1970年到现在的秒数计算出来然后写入计数寄存器里面。读取时间也是一样的,读出来的是秒,再转换成现在的时间。把一些函数写好后,以后直接调用很方便。



电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-28 00:42:02 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
发帖的时候图片的尺寸没有设定好
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-29 00:23:21 | 显示全部楼层
我用的ADC1通道2,进行单通道的连续转换模式。转换完成后触发中断。在中断中进行计算算出电压值



void  ADC_IRQHandler(void)
{
uint16 tmp;
tmp = ADC1->DR;
voltage = (unsigned char)((float)tmp / 4096 * 33);
WriteChar(voltage / 10 + 0x30,130,30,RED,BLACK);
WriteChar('.',138,30,RED,BLACK);
WriteChar(voltage % 10 + 0x30,146,30,RED,BLACK);
WriteChar('V',154,30,RED,BLACK);
}

ADC.zip

978.59 KB, 下载次数: 553

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-30 01:05:37 | 显示全部楼层
这次在上一个进度的基础上加入了通道16,就是内部温度传感器。采用扫描模式,用到了DMA,用这个的时候碰到了个很纠结的问题:
为了存储两次转换的数据,我定义了 unsigned int Table[2];来存储数据。之后问题就来了,在Table[0]中是一个32位的数据,而Table[1]中就没有数据。我很纳闷这是为什么。
刚好Table[0]的32位数据就把两次转换的值都装入其中了。最后我就定义为unsigned int Table[1]; 这样也可以装入两个结果。





电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-30 17:46:17 | 显示全部楼层
将启动板子的次数存在24c02中,每次启动板子都读出来然后显示在液晶上。


液晶上面的40 ,就是启动板子的次数。


I2C.zip

1.06 MB, 下载次数: 577

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-30 19:00:04 | 显示全部楼层
更新挺快的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-31 18:45:24 | 显示全部楼层
回复【24楼】正点原子:

更新挺快的。

---------------------------------
调了一天的SPI和读写W25X16,,,读ID的时候总是0XFFFF。我就很纠结了,然后没办法用例程试试,结果例程下载进去后也是读不出ID,液晶上重复着“W25X16 Check Failed”和“Please Check”,,,,瞬间就郁闷了。原子的例程怎么会有问题呢。。到处找程序的问题还是解决不了,静静的思考了会,终于发现,我上一个实验用的是通道2来进行AD采样,而且还是用杜邦线把PA2接到3.3V上面。而W25X16的CS脚也是PA2,把杜邦线拔掉,瞬间OK了。肯定敲代码把头搞昏了。。。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-3-31 19:23:56 | 显示全部楼层
SPI模式读写Flash实验成功后再把SD卡实验搞了之后就可以把字库放在SD卡里面然后复制到FLASH中,之后,之后就可以显示汉字的。。下一个实验就操作SD卡吧。


对于SPI的使用我这次体会最深刻的就是设置CPOL和CPHA。所以我的SPI初始化函数入口参数就是这两个。可以根据不同的芯片来设置不同的模式;
/***********************************
函数功能:SPI配置
入口参数:CPOL和CPHA
出口参数:无
备    注:无
***********************************/
void  SPI_Config(uint8 cpol,uint8 cpha)
{
RCC->APB2ENR|=1<<2;       //PORTA时钟使能  
RCC->APB2ENR|=1<<12;      //SPI1时钟使能 
GPIOA->CRL &= 0X000FFFFF; 
GPIOA->CRL |= 0XBBB00000;    
GPIOA->ODR |= 7 << 5;    
SPI1->CR1 = 0x0000;
SPI1->CR1 |= 1<<9; 
SPI1->CR1 |= 1<<8;  
SPI1->CR1 |= 1<<2; //主机模式
if(cpol == 1)
SPI1->CR1 |= 0X02; //空闲模式下SCK为1 CPOL=1
else
SPI1->CR1 &= 0XFD;
if(cpha == 1)
SPI1->CR1 |= 0x01; //空闲模式下SCK为1 CPOL=1
else
SPI1->CR1 &= 0xfe;   
SPI_Speed(256);
SPI1->CR1 |= 1<<6;       //SPI使能


电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-31 21:43:48 | 显示全部楼层
回复【25楼】liklon:
---------------------------------
我们的例程是没问题的,这个如果有问题,就考虑硬件连接,或者硬件设置错误的问题了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-1 23:55:39 | 显示全部楼层
回复【27楼】正点原子:
---------------------------------
希望原子哥出一个操作SD卡的视频专辑。看了两天的SD卡2.0协议感觉效果不是蛮好。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2195
金钱
2195
注册时间
2012-2-8
在线时间
34 小时
发表于 2013-4-2 00:27:23 | 显示全部楼层
楼主有没有分析过作品需要用到那些功能模块? 不要走偏了.
https://github.com/roxma
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-2 01:04:21 | 显示全部楼层
回复【29楼】Pony279:
---------------------------------
恩,我是根据评分标准在做。完成STM32的基本功能的实验是评分项目。基本功能实验已经快都搞完了,对STM32也有点熟悉了,等把sd卡搞完后就开始做作品。作品需要的模块都准备好了…多谢关注哦
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-3 19:18:00 | 显示全部楼层
这几天通过几个文档,还有例说STM32那本书上讲的,对SD卡2.0协议有了大概的认识。最开始就是初始化,上电给74个以上的时钟,然后片选拉低发送指令CMD0用来复位和激活SPI模式。再发送CMD8可以判断SD卡是否支持给定的工作电压范围,还可以分V1.0卡,MMC卡和V2.0卡。前者是对CMD8没有响应后者有响应。之后检测响应返回的参数再来分析是否支持在给定的电压范围。之后再判断是SDV2.0卡还是SDV2.0HC卡。我手上的是4G的卡,属于高容量SD卡。在发送ACMD41后再去读OCR,判断其BIT30位来决定是高容量卡还是标准卡。整个初始化过程就完成。
写单块就是先发送写指令后写入0xfe然后开始写入数据,读单块数据时就是先写读指令等待响应返回数据为0xfe然后开始读取。连续读和写就是指令的不同而已。





电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-4-3 19:30:20 | 显示全部楼层
回复【31楼】liklon:
---------------------------------
顶。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-5 08:36:33 | 显示全部楼层
上次实验完成了SD卡的扇区读写,移植了znFAT来进行文件级操作。将以GB2312编码的字库放在SD卡中复制到W25X16中。在文件读扇区的时候出现了一个问题就是,刚开始我对SPI的速度是4分频,但是这样在读文件的时候经常读不出来。之后调了半天把SPI速度再减慢,8分频。之后才能正确的读出数据。接下来就开始做我的寝室防盗系统了...


两个bin文件是我用的字库,16x16的。取模方式是列行式,高位在前。具体怎么操作,在代码里的MYHZ.C里面。

HZtest.zip

1.34 MB, 下载次数: 545

st16.bin

255.56 KB, 下载次数: 507

znFAT.zip

91.35 KB, 下载次数: 511

kt16.bin

255.56 KB, 下载次数: 507

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-4-5 10:18:06 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-5 16:37:26 | 显示全部楼层
回复【34楼】正点原子:
---------------------------------
搞了一个晚上,早上睡的,刚起床,呜呜...我这次写的代码只考虑到了我自己使用,局限性太大。等这次比赛搞完了得好好研究一下原子哥的例程。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-11 00:01:49 | 显示全部楼层


这个是目前的界面
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-4-11 00:11:10 | 显示全部楼层
回复【36楼】liklon:
---------------------------------
蛮漂亮啊,呵呵.
楼主喜欢看火影?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-5-10
在线时间
5 小时
发表于 2013-4-12 11:56:02 | 显示全部楼层
呵呵,期待结果
回复 支持 反对

使用道具 举报

4

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-3-12
在线时间
0 小时
发表于 2013-4-12 16:00:03 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-12 18:09:45 | 显示全部楼层
我用了PT2262和PT2272无线模块。因为这模块操作非常简单。我采用了两个发射一个接收。将模块加上一些外围电路后放在电脑的下面。如果电脑被拿走那么接收端就无法收到相应的发射模块发射过来的信号。这样来判断是否被拿走。




基本的功能实现,之后会完善功能和增加些功能。

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-12 18:10:50 | 显示全部楼层
回复【37楼】正点原子:
---------------------------------
看了好几年的火影,不知道何时才能看到结局。呵呵。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

4

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2013-3-11
在线时间
5 小时
发表于 2013-4-14 03:36:41 | 显示全部楼层
回复【40楼】liklon:
---------------------------------
可以改进为发中文的短信哦哦
回复 支持 反对

使用道具 举报

4

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2013-3-11
在线时间
5 小时
发表于 2013-4-14 12:20:04 | 显示全部楼层
现在想着是把一些信息存入SD卡中,怎么搞啊
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-14 12:25:48 | 显示全部楼层
回复【43楼】gaohuihui258:
---------------------------------
一不小心把SD卡写乱了。。就是写入数据没有搞好,不知道为什么
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-14 12:28:33 | 显示全部楼层
我在调试的时候想把监控信息存在SD卡里,先打开以今天日期为名的txt文件,如果打开失败是没有此文件就新建一个文件,然后再去写入数据。但是打开和新建都正确,就是写入的时候不知道怎么回事总卡住。写了几下,然后把SD卡插入电脑后就成这样了:






电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-14 12:43:23 | 显示全部楼层

新建文件是成功了但是写入不了数据,求解
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-4-14 14:53:38 | 显示全部楼层
回复【46楼】liklon:
---------------------------------
fatfs?
要f_close才会写入成功的,否则只有文件名。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2013-3-30
在线时间
0 小时
发表于 2013-4-14 15:58:55 | 显示全部楼层
楼主厉害呀
回复 支持 反对

使用道具 举报

31

主题

175

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-1-13
在线时间
6 小时
 楼主| 发表于 2013-4-14 16:16:34 | 显示全部楼层
回复【47楼】正点原子:
---------------------------------
        tmp = znFAT_Open_File(&OpenFileInfotxt,addr_table,0,1);    //打开文件
if(tmp != 0)                                                                          //如果打开失败
{
 dt.date.year = timer.w_year; 
 dt.date.month = timer.w_month; 
 dt.date.day = timer.w_date;
   dt.time.hour = timer.hour;   
 dt.time.min = timer.min;   
 dt.time.sec = timer.sec;
 tmp = znFAT_Create_File(&OpenFileInfocreat,addr_table,&dt);  //创建文件
 znFAT_WriteData(&OpenFileInfocreat,6,WriteSD_TimeTable);    //写入数据
 znFAT_WriteData(&OpenFileInfocreat,num,pBuff);                 //写入数据
 znFAT_Close_File(&OpenFileInfocreat);                                    //关闭文件
 znFAT_Flush_FS(); 
}
else                                                                                          //如果打开成功
{

znFAT_WriteData(&OpenFileInfotxt,6,WriteSD_TimeTable);//写入数据
znFAT_WriteData(&OpenFileInfotxt,num,pBuff);                 //写入数据 
znFAT_Close_File(&OpenFileInfotxt);                                 //关闭文件
znFAT_Flush_FS(); 
}

我用的是znfat,每次程序运行到写入数据时就运行不过去了。前面的创建文件和打开文件都没有问题。
电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-4-14 16:36:23 | 显示全部楼层
znfat没玩过。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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