这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » jobs ARM DIY进程帖(TFT显示)

共28条 2/3 1 2 3 跳转至
院士
2012-04-12 21:38:46     打赏
11楼
我的开发板,我的摄影

    今天还有点累,原计划放出的uC/OS-II实时操作系统移植,只能等到周五晚上了。
     今天把前两天焊接的效果图上传上来吧。

     新收到的PCB板,这就是希望……


     嘿嘿,这是焊成的板子。

     来一大大的特写


     我的目的是立志做硬件工程师里摄影技术最好的

院士
2012-04-15 16:43:51     打赏
12楼
EEPROM读写实验之AT24C02初认识
    EEPROM是一个很神奇的东西,它神奇在于它在失去电力供应时,还能保证芯片内存储的内容不会丢失,当然有人就称其为非易失性存储器。
    IIC接口,也有称为2线接口,是由飞利浦公司最先提出的通讯协议及电气标准。只用2根线就达成数据传输的目的,其应用主要用于板上传输。
    STM32,这个由意法半导体公司推出的以Cortex- M3以ARM核心的处理器,其IIC硬件接口被好多好多工程师们称为垃圾的东西。国内主要论坛几乎都提倡使用其GPIO模拟IIC通讯协议,这样才能达到与标准IIC器件的连接。
    三个主角都已经登台,现在来我这个导演说说剧情吧!
    ST公司是一个相当大的公司,个人觉得其不太可能将自己的IIC硬件做成“废物”一个。国内的一些论坛里工程师们的诉苦也决不会空穴来风,那么情况究竟是一个怎样的情况呢?跟我一起来探个明白吧!
    首先登台的是AT24C02,这个EEPROM芯片。这个小芯片能存储256*8bit的数据,从其datasheet里得知,其地址指针由0x00 – 0xFF,共256个。那我们只需要定义一个 INT8U Address;的变量即可表示其地址的指针了。数据因为是8位的,我们这里定义成无符号型变量,也为INT8U Value;两个一样的变量,什么时候发挥作用?它们之间有着严格的时序安排,分为顺序读,随机读,块读,写方式也分为单字节写,按页写。其流程图如下所示:



(详细完整的流程图请见附件)
    AT24C02的时序已经掌握,那么按其规则一定可以读写AT24C02了。好了,今天周末,要挤出时间来去玩,就写到这里吧。明天请出我们另外两个主角,IIC与STM32 IIC硬件通讯。

附:AT24C02时序流程图     http://share.eepw.com.cn/share/download/id/67070

院士
2012-04-17 23:17:38     打赏
13楼
我想说,我很好用——STM32的硬件IIC使用

    IIC硬件接口被好多好多工程师们称为垃圾的东西,程序经常“卡死”在哪个语句检测、“IIC的硬件检测存在优先级的问题”云云。事实真得如此吗?下面跟随jobs一起来使用IIC硬件资源吧!
     我们在读取AT24C02时要用到下面几个库函数:I2C_GenerateSTART, I2C_Send7bitAddress, I2C_SendData, I2C_GenerateSTOP还有超级牛X的函数I2C_CheckEvent。前几个函数不用多说,如果有难度也就在7位地址时,注意地址位,最后一位为读/写控制位,定义地址时,要先将IIC地址左移1位。
      几乎所有工程师的程序都会“卡”在I2C_CheckEvent()函数这里,每程序都会不出意外的“停在”这里。其实多数情况还是咱们使用时选用的标志符未准确而造成的。本次读写实验所用到的EVENT如下所列:
    起始标志            I2C_EVENT_MASTER_MODE_SELECT 
    地址写标志        I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED 
    数据写标志        I2C_EVENT_MASTER_BYTE_TRANSMITTED
   地址读标志         I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED 
   数据读标志         I2C_EVENT_MASTER_BYTE_RECEIVED

    因为此次使用IIC主模式来控制AT24C02,所以上述标志位已够用了。还有很多,也请网友帮忙总结。
    典型代码示例:
   I2C_GenerateSTART(AT24C02_I2C, ENABLE);
  while(!I2C_CheckEvent(AT24C02_I2C, I2C_EVENT_MASTER_MODE_SELECT));
 
  I2C_Send7bitAddress(AT24C02_I2C, I2C_SLAVE_ADDRESS7, I2C_Direction_Transmitter);
  while(!I2C_CheckEvent(AT24C02_I2C, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
 
  I2C_SendData(AT24C02_I2C, address);
  while(!I2C_CheckEvent(AT24C02_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
 
  I2C_SendData(AT24C02_I2C, value);
  while(!I2C_CheckEvent(AT24C02_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
 
  I2C_GenerateSTOP(AT24C02_I2C, ENABLE);


院士
2012-04-17 23:40:00     打赏
14楼
没有问题。
可以读定AT24C02
原计划每天更新来着。
最近看球,实在hold不住了。

院士
2012-05-14 22:00:32     打赏
15楼
解放Systick,uC/OS-II我来了
        Micrium官方给出的uC/OS-II的移植是以Systick为时钟节拍。但是有一个灰常,灰常好用的延时函数是由Systick来写的,这样下来,要么放弃uC/OS-II,要么放弃现有的延时函数,需要重新写。纠结呀~~~
        想想,为了更好的,深入的了解uC/OS-II的移植过程,这次实验室采用更改uC/OS-II时钟节拍的方案,来解决Systick。经过一天的不懈努力,终于实时了(本人比较笨,不要拍砖呀~~嘿嘿)
        下面两张图成功运行的截图!

 

 
        我是使用的IAR for ARM 6.3版本。我开启了3个任务,任务LED灯1与任务LED灯2,分别控制LED灯的闪烁。一个以100Hz的频率闪烁,一个以1Hz的频率闪烁。通过示波器的监测,完美实现100hz的方波。
        附件里为移植的port文件,在iar环境下可以直接使用。
        不多说了,继续写新的实验了~~

附:uC/OS-II移植port文件

院士
2012-05-14 23:45:54     打赏
16楼
在IAR编译环境里提供了插件,可以调出来。
具体方法:
工程-〉option-〉debuger 在其页面里的plugins标签页,将ucosii的插件勾选即可~~

院士
2012-05-15 09:30:30     打赏
17楼
keil 貌似没有类似的功能……

不了解keil工具链,不能准确答复~~

院士
2012-05-22 22:41:25     打赏
18楼
开空调了,DS18B20告诉我室温27.4度
        炎炎夏日早已开始,北京闷热的天气 + 办公室狭小的空间 + 一身正装 + 普通坐椅 …… 这几天不仅心情燥热,胃口也相当不好,不过,这一切从今天大厦开始供空调开始已经结束了……
看我的DS18B20采集回来的数据

 
        嘿嘿,用手指掐了一会儿,这温度还真上去了 ……
        总体来讲,这个实验还是比较简单的,赶紧做下面的实验了。6月18日就要到来了……


院士
2012-05-23 10:20:05     打赏
19楼
不会加回车换行符。

试了几次,我的串口调试助手都不支持换行。

院士
2012-05-23 10:52:06     打赏
20楼
我试试。

我曾经自己写了一个能自动添加回车的上位机软件。嘿嘿

共28条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]