元件及外围芯片采买信息
虽然PCB板咱们网站(EEPW)提供了,但是芯片还是自己来购买的,下面我就将我的芯片采购信息与大家分享一下。
这些都是大件啊~~一下就花掉我好多银子!
为了节省开支,我购买的PCB空板,这样还能省下一些……穷啊~~
由于这次使用了0603元件,而我常备的贴片元件却是0805封装的,于是不得不又花了30+购买了电阻与电容元件包。
即将要购买的是蓝牙芯片。本来打算购买2.4G的无线通讯来着,但觉得也没有太大的用。而且一买还得买两个。自己也有蓝牙棒,这样买一个蓝牙从机芯片就都搞定了。这个蓝牙芯片也要花掉了27块啊~~
等到蓝牙芯片到手,此次活动的全部采购就宣告结束,之后也会跟帖上代码。
如果大家想购买与我一样的芯片或方案,欢迎大家跟帖!^_^
虽然PCB板咱们网站(EEPW)提供了,但是芯片还是自己来购买的,下面我就将我的芯片采购信息与大家分享一下。
这些都是大件啊~~一下就花掉我好多银子!
为了节省开支,我购买的PCB空板,这样还能省下一些……穷啊~~
由于这次使用了0603元件,而我常备的贴片元件却是0805封装的,于是不得不又花了30+购买了电阻与电容元件包。
即将要购买的是蓝牙芯片。本来打算购买2.4G的无线通讯来着,但觉得也没有太大的用。而且一买还得买两个。自己也有蓝牙棒,这样买一个蓝牙从机芯片就都搞定了。这个蓝牙芯片也要花掉了27块啊~~
等到蓝牙芯片到手,此次活动的全部采购就宣告结束,之后也会跟帖上代码。
如果大家想购买与我一样的芯片或方案,欢迎大家跟帖!^_^
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
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
我想说,我很好用——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);
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);
解放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文件
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文件
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |