不学51单片机直接驱动lcd,直接学STM32.会怎样?他们之间有什么关系?哪个更简单?如果脑子比较笨的,应该先

小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
逆风的方向更适合飞翔,我不怕千万人阻挡,只怕自己投降
#智能家居#
&智能家居不只是能够控制空调定时开关,也不是只让电灯亮灭。首当其冲的是智能,智能其实就是智慧和行动的总称再将其放到家居上,让家居能够拥有智慧并行动。他能够最大程度上的帮助或者替代主人完成某一行动比如上述的两者,比如拉开窗帘比如烧一壶水,更大胆点说比如让电视和主人聊聊天
关于嵌入式就业方向浅谈
由于3G持续升温,这方面的人才也保持了供不应求的势头。据悉,目前国内3G核心嵌入式人才不足万人,其中华为约人,中兴通讯、大唐各约2000人,以区区万人的阵容去争夺据称有上千亿元的市场,3G嵌入式工程师的身价由此可见一斑。在近期的人气职位榜上,电信行业嵌入式工程师行市走高,嵌入式研发工程师、嵌入式技术支持工程师都高居前五位。&&具体嵌入式就业方向可以分为二个方面:第一:硬件方向,对硬件比较了解,有一定的硬件功底,主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、&Board Support&Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。&&第二:软件方向的开发,这占社会需求的主要方面,主要从事嵌入式操作系统和应用软件的开发。,可以从事消费电子、安全安防、汽车电子、医疗电子、电信等行业的计算机应用设计开发岗位就业,担任嵌入式产品及应用系统的设计与开发工程师,从事嵌入式技术的应用项目设计开发、产品维护与技术服务等工作。&
STM32开发板
STM32 SPI DMA 的使用(2)
四、DMA说明
是的先进高性能总线上的设备,它有个端口:一个是从端口,用于配置,另一个是主端口,使得可以在不同的从设备之间传输数据。
的作用是在没有核心的干预下,在后台完成数据传输。在传输数据的过程中,主处理器可以执行其它任务,只有在整个数据块传输结束后,需要处理这些数据时才会中断主处理器的操作。它可以在对系统性能产生较小影响的情况下,实现大量数据的传输。
&五、SPI_DMA的通信过程
&&设置外设地址
&&设置存储器地址
&&设置传输数据量
&&设置通道的配置信息
&&使能DMA通道,启动传输
&&&发送时,在每次TXE被设置为&1&时发出DMA请求,DMA控制器则写数据至SPI_DR寄存器,TXE标志因此而被清除。
&&&接收时,在每次RXNE被设置为&1&时发出DMA请求,DMA控制器则从SPI_DR寄存器读出数据,RXNE标志因此而被清除。
六、相关代码
这里使用的是SPI1
SPI_DMA配置
1&/*******************************************************************************
&2&*&Function&Name&&:&SPI1_DMA_Configuration
&3&*&Description&&&&:&配置SPI1_RX的DMA通道2,SPI1_TX的DMA通道3
&4&*&Input&&&&&&&&&&:&None
&5&*&Output&&&&&&&&&:&None
&6&*&Return&&&&&&&&&:&None
&7&*&Attention&&&&&&&&&&&&&:&
&8&*******************************************************************************/
&9&void&SPI1_DMA_Configuration(&void&)
11&&&&DMA_InitTypeDef&DMA_InitS
13&&&&&/*&DMA1&Channel2&(triggered&by&SPI1&Rx&event)&Config&*/
14&&DMA_DeInit(DMA1_Channel2);&&
15&&&DMA_InitStructure.DMA_PeripheralBaseAddr&=&SPI1_DR_A&&&&&&&&&&&&&&&&&&&&&&&&&&//设置&SPI1&发送外设(0x4001300C)&地址(目的地址)
16&&&DMA_InitStructure.DMA_MemoryBaseAddr&=&(uint32_t)SPI1_RX_B&&&&&&&&&&&&&&&&&&&&//设置&SRAM&存储地址(目的地址)
17&&&DMA_InitStructure.DMA_DIR&=&DMA_DIR_PeripheralSRC;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//传输方向&外设-内存
18&&&DMA_InitStructure.DMA_BufferSize&=&SPI1_ReciveBufferS&&&&&&&&&&&&&&&&&&&&&&&&&//设置&SPI1&发送长度
19&&&DMA_InitStructure.DMA_PeripheralInc&=&DMA_PeripheralInc_D
20&&&DMA_InitStructure.DMA_MemoryInc&=&DMA_MemoryInc_E
21&&&DMA_InitStructure.DMA_PeripheralDataSize&=&DMA_PeripheralDataSize_B
22&&&DMA_InitStructure.DMA_MemoryDataSize&=&DMA_MemoryDataSize_B
23&&&DMA_InitStructure.DMA_Mode&=&DMA_Mode_N
24&&&DMA_InitStructure.DMA_Priority&=&DMA_Priority_VeryH
25&&&DMA_InitStructure.DMA_M2M&=&DMA_M2M_D
26&&&DMA_Init(DMA1_Channel2,&&DMA_InitStructure);
28&&DMA_ITConfig(DMA1_Channel2,&DMA_IT_TC,&ENABLE);
29&&&/*&Enable&SPI1&DMA&RX&request&*/
30&&&SPI1-&CR2&|=&1&&0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//接收缓冲区DMA使能
31&&DMA_Cmd(DMA1_Channel2,&ENABLE);
34&&&&&/*&DMA1&Channel3&(triggered&by&SPI1&Tx&event)&Config&*/
35&&DMA_DeInit(DMA1_Channel3);&&
36&&&DMA_InitStructure.DMA_PeripheralBaseAddr&=&SPI1_DR_A&&&&&&&&&&&&&&&&&&&&&&&&&&//设置&&接收外设(0x4001300C)&地址(源地址)
37&&&DMA_InitStructure.DMA_MemoryBaseAddr&=&(uint32_t)SPI1_TX_B&&&&&&&&&&&&&&&&&&&&//设置&SRAM&存储地址(源地址)
38&&&DMA_InitStructure.DMA_DIR&=&DMA_DIR_PeripheralDST;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//传输方向&内存-外设
39&&&DMA_InitStructure.DMA_BufferSize&=&SPI1_SendBufferS&&&&&&&&&&&&&&&&&&&&&&&&&&&//设置&SPI1&接收长度
40&&&DMA_InitStructure.DMA_PeripheralInc&=&DMA_PeripheralInc_D&&&&&&&&&&&&&&&&&&//外设地址增量(不变)
41&&&DMA_InitStructure.DMA_MemoryInc&=&DMA_MemoryInc_E&&&&&&&&&&&&&&&&&&&&&&&&&&&//内存地址增量(变化)
42&&&DMA_InitStructure.DMA_PeripheralDataSize&=&DMA_PeripheralDataSize_B&&&&&&&&&&//外设传输宽度(字节)
43&&&DMA_InitStructure.DMA_MemoryDataSize&=&DMA_MemoryDataSize_B&&&&&&&&&&&&&&&&&&&//内存传输宽度(字节)
44&&&DMA_InitStructure.DMA_Mode&=&DMA_Mode_N&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//传输方式,一次传输完停止,不重新加载
45&&&DMA_InitStructure.DMA_Priority&=&DMA_Priority_VeryH&&&&&&&&&&&&&&&&&&&&&&&&&&&//中断方式-高(三级)
46&&&DMA_InitStructure.DMA_M2M&=&DMA_M2M_D&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//内存到内存方式禁止
47&&&DMA_Init(DMA1_Channel3,&&DMA_InitStructure);
49&&&DMA_ITConfig(DMA1_Channel3,&DMA_IT_TC,&ENABLE);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//开启&DMA1_Channel3&传输完成中断
50&&&DMA_ITConfig(DMA1_Channel3,&DMA_IT_TE,&ENABLE);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//开启&DMA1_Channel3&传输错误中断
51&&&/*&Enable&SPI1&DMA&TX&request&*/
52&&&SPI1-&CR2&|=&1&&1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//发送缓冲区DMA使能
53&&&DMA_Cmd(DMA1_Channel3,&DISABLE);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//开启&DMA&通道&DMA1_Channel3
1&/*******************************************************************************
&2&*&Function&Name&&:&SPI1_Send
&3&*&Description&&&&:&SPI1的DMA方式发送
&4&*&Input&&&&&&&&&&:&SPI1_TX_Buff[SPI1_SendBufferSize]
&5&*&Output&&&&&&&&&:&None
&6&*&Return&&&&&&&&&:&None
&7&*&Attention&&&&&&&&&&&&&:&关闭DMA通道3之前必须等待TXE为1,等待忙标志为0
&8&*******************************************************************************/
&9&void&SPI1_Send(&u8&*buff,&u32&len&)
11&&&&&DMA1_Channel3-&CPAR&=&SPI1_DR_A&//外设地址
12&&&&&DMA1_Channel3-&CMAR&=&(u32)&&//mem地址
13&&&&&DMA1_Channel3-&CNDTR&=&len&;&//传输长度
14&&&&&DMA1_Channel3-&CCR&=&(0&&&&14)&|&//&非存储器到存储器模式
15&&&&&&&&&&&&&(2&&&&12)&|&//&通道优先级高
16&&&&&&&&&&&&&(0&&&&11)&|&//&存储器数据宽度8bit
17&&&&&&&&&&&&&(0&&&&10)&|&//&存储器数据宽度8bit
18&&&&&&&&&&&&&(0&&&&&9)&|&//&外设数据宽度8bit
19&&&&&&&&&&&&&(0&&&&&8)&|&//&外设数据宽度8bit
20&&&&&&&&&&&&&(1&&&&&7)&|&//&存储器地址增量模式
21&&&&&&&&&&&&&(0&&&&&6)&|&//&外设地址增量模式(不增)
22&&&&&&&&&&&&&(0&&&&&5)&|&//&非循环模式
23&&&&&&&&&&&&&(1&&&&&4)&|&//&从存储器读
24&&&&&&&&&&&&&(1&&&&&3)&|&//&允许传输错误中断
25&&&&&&&&&&&&&(0&&&&&2)&|&//&允许半传输中断
26&&&&&&&&&&&&&(1&&&&&1)&|&//&允许传输完成中断
27&&&&&&&&&&&&&(1);&&&&&&&&//&通道开启
1&/*******************************************************************************
&2&*&Function&Name&&:&SPI1_Recive
&3&*&Description&&&&:&SPI1的DMA方式接收
&4&*&Input&&&&&&&&&&:&None
&5&*&Output&&&&&&&&&:&SPI1_RX_Buff[SPI1_ReciveBufferSize]
&6&*&Return&&&&&&&&&:&None
&7&*&Attention&&&&&&&&&&&&&:&必须要先关闭通道2,然后再配置通道2的参数
&8&*******************************************************************************/
&9&void&SPI1_Recive(&u8&*buff,&u32&len&)
11&&&&&DMA1_Channel2-&CCR&&=&~(&1&&&&0&);&&&&&&&&&&//关闭DMA通道2
13&&&&&DMA1_Channel2-&CPAR&=&SPI1_DR_A&//外设地址
14&&&&&DMA1_Channel2-&CMAR&=&(uint32_t)&//mem地址
15&&&&&DMA1_Channel2-&CNDTR&=&len&;&//传输长度
16&&&&&DMA1_Channel2-&CCR&=&(0&&&&14)&|&//&非存储器到存储器模式
17&&&&&&&&&&&&&(2&&&&12)&|&//&通道优先级高
18&&&&&&&&&&&&&(0&&&&11)&|&//&存储器数据宽度8bit
19&&&&&&&&&&&&&(0&&&&10)&|&//&存储器数据宽度8bit
20&&&&&&&&&&&&&(0&&&&&9)&|&//&外设数据宽度8bit
21&&&&&&&&&&&&&(0&&&&&8)&|&//&外设数据宽度8bit
22&&&&&&&&&&&&&(1&&&&&7)&|&//&存储器地址增量模式
23&&&&&&&&&&&&&(0&&&&&6)&|&//&外设地址增量模式(不增)
24&&&&&&&&&&&&&(0&&&&&5)&|&//&非循环模式
25&&&&&&&&&&&&&(0&&&&&4)&|&//&传输方向&外设-内存
26&&&&&&&&&&&&&(0&&&&&3)&|&//&允许传输错误中断
27&&&&&&&&&&&&&(0&&&&&2)&|&//&允许半传输中断
28&&&&&&&&&&&&&(1&&&&&1)&|&//&允许传输完成中断
29&&&&&&&&&&&&&(1);&&&&&&&&//&通道开启
【摘取】 STM32 SPI DMA 的使用
(图为:物联网 &智能家居 &云应用开发板)
  一是想总结一下SPI总线的特点与注意点,二是总结一下SPI&DMA的使用
一、SPI信号线说明
  通常SPI通过4个引脚与外部器件相连:
&&MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
&&MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
&&SCK:串口时钟,作为主设备的输出,从设备的输入
&&NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为&片选引脚&,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。
  MOSI脚相互连接,MISO脚相互连接。这样,数据在主和从之间串行地传输(MSB位在前)。
  通信总是由主设备发起。主设备通过MOSI脚把数据发送给从设备,从设备通过MISO引脚回传数据。这意味全双工通信的数据输出和数据输入是用同一个时钟信号同步的;时钟信号由主设备通过SCK脚提供。
三、NSS说明与注意点
  NSS分为内部引脚和外部引脚。
  NSS外部引脚可以作为输入信号或者输出信号,输入信号一般用作硬件方式从机的片选,而输出信号一般用于主SPI去片选与之相连的从SPI。
  NSS从设备选择有两种模式:
1、软件模式
  可以通过设置SPI_CR1寄存器的SSM位来使能这种模式,当它为1时,NSS引脚上的电平由SSI决定。在这种模式下NSS外部引脚可以用作它用,而内部NSS信号电平可以通过写SPI_CR1的SSI位来驱动。 &
2、硬件模式
两种方式:
(1)对于主SPI,NSS可以直接接高电平,对于从SPI,可以直接接低电平。  
(2)当STM32F10xxx工作为主SPI,并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,这时主机的NSS讲作为输出信号,引脚信号被拉低,所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成从SPI设备。
  此时两个的NSS信号线可以接个上拉电阻直连。
单片机!!!!
单片机就是将一台电脑的结构全部集成在一个芯片上。它的结构包括CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。那么如何才能学习好单片机呢?下面是单片机视频教程链接让我们系统的学习单片机的操作及编程。
零基础学习嵌入式开发
如何从零基础学习嵌入式开发,我在这里给大家一个切实可行的道路,而且相对容易入手,学习中会不断有收获。
掌握单片机,嵌入式开发是每个硬件工程师必修课程。但嵌入式开发的掌握却并不简单,需要循序渐进的学,需要耐心的学。
对于一个零基础的人来说,学习嵌入式还是有一定难度的。
对于一个大学电子或计算机专业的人员来说,学习单片机,嵌入式还是要方便一些。
对于没有电路基础,没有编程基础的人来说,学习应该先基本掌握电路和c语言编程。
1 准备工作
模拟电路,数字电路,c语言编程
模拟电路比较难学,学个模模糊糊也就可以了,主要方法是听视频教程,看简单一点的教材,有时间在Multism上做一些仿真实验;数字电路比较容易学,找个大学视频教程学完它;c语言编程找一本c语言编程教材,做完书上习题即可。
模拟电路的视频教程有:清华华成英的《模拟电路基础》,讲的很细,但也很枯燥。
2 51单片机
学习51单片机,可以花100多元钱,到淘宝上买一块学习开发板,把视频全部学完,然后自己再做一些练习就可以了。最好掌握proteus仿真,不买硬件也可以学习。学习51单片机,一是掌握51单片机的各种资源,二是掌握常用元器件和总线。学完后,自己做一些实用的东西比如led广告屏之类的。会很有成就感哟!
个人觉得51单片机比较好的教程有:
郭天祥《十天学会51单片机》;晨辉教你轻松学51;手把手教你学单片机(视频教程)等
为了增加各种硬件知识,提高学习兴趣,大家还可以买arduino来玩一些有趣的电子制作,可以熟悉avr单片机。会增加很多学习兴趣哟!
3 学习small rtos51
买一本陈明计、周立功写的《嵌入式实时操作系统Small RTOS51原理及应用》,仔细研读,做完实验。
学习操作系统比较枯燥,要坚持。
会avr单片机的,《建立一个属于自己的AVR的RTOS》是最容易入手的操作系统教程。比陈明计的好读多了。
4 学习ucos ii
买邵贝贝翻译的《嵌入式实时操作系统--μC/OS-Ⅱ》仔细研读,并找周立功公司的杨屹的文章,实现对ucos ii的移植。
5 在arm上运行ucos ii
网上有很多这个平台的实验,教程,多做一些实验。
淘宝上开发学习板一大堆,大家可以买一块来做一做。
推荐一本书:《一步步写嵌入式操作系统--ARM编程的方法与实践》
这本书不同于枯燥的教材,完全是为新手编写的,一步一步实现的操作系统。我给的这个当当网址可以试读某些章节
6 在arm上运行 linux
linux比较复杂,但学习操作系统必须学习掌握linux,以后搞安卓开发也有基础。
以上学习有了眉目,就可以到企业去实习,做嵌入式系统开发了。
物联网开发智能家居云应用stm32开发板
单片机的发展趋势
回顾过去 展望未来
&&论单片机发展趋势及其应用
没电,可以利用太阳能发电;没水,可以南水北调&&很多问题,都可以解决,可是地球的资源面对那么大人口,它不是无限,因此,我们的发明家、研究者用科学为后世造福,环境污染严重,资源匮乏,曾经我们人类还是靠着烧木材生火煮饭,我们现在可以大胆的假设,如果我们还是按照就方法,但是每天消耗的木材和树木的生长不成正比,换句话说,消耗的远大于再生长,那么地球早晚会秃头,而且会使环境污染更严重,到底臭氧层空洞&&一个个问题将会等待着我们,但是现在我们有电饭煲,一系列问题也一扫而光,一个按键省时又省力,是什么有这股神奇的力量?答案很简单就是&&单片机。它的功用不仅仅如此,洗衣机、电冰箱、空调机、彩电、视频器材、量设备&&中都有着它的身影。
那我们不得不问一句,单片机哪来的?总不能从石头里蹦出来吧,而是1972年4月,霍夫等人开发出第一个8位微处理器Intel 8008。后来逐渐改进和发展,1976年intel公司研制出MCS-48系列8位的单片机,这标着单片机的问世,并广泛用于微型计算机和工业自动控制设备。
现如今单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能,民用豪华轿车的安全保障系统,、、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。举几个例子:
1.在各种大型电器中的模块化应用
某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
2.单片机在汽车设备领域中的应用
  单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能,GPS导航系统,,制动系统等等
&& 此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
用不胜枚举& 车载斗量形容单片机并不为过,现在世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。
??  纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
一、更生活化 目前,随着我国国民经济的发展和人民物质文化生活水平的不断提高,人们在忙于工作之余,人们对生活的质量要求越来越高。
1、豆浆机是一种新型的家用饮料机,以黄豆为原料,直接加工成熟的热豆浆。若在黄豆中配以芝麻、花生、杏仁等佐料,可以做出各种风味的鲜美饮料。 豆浆机由粉碎黄豆的搅拌机、豆浆加热器和控制电路三大部分组成。用单片机研制的全自动豆浆机的控制电路,只要按下启动按键,豆浆机就开始工作,一会儿就能喝到美味又营养的豆浆。整个过程由单片机全自动控制,用起来更加地方便、更加的安全。
2、现在的父母不仅要面对工作的压力,带孩子的问题也困扰着不少的父母,而智能遥控音乐婴儿车可以减缓父母的问题。其由婴儿车智能控制模块、检测系统、遥控模块、显示模块、执行系统、音乐模块等几部分构成。
&& &(1)婴儿车智能控制系统采用嵌入式系统设计,能够自动运行,处理数据,控制和协调各部分模块工作。用户可以在本系统开发的基础上对婴儿车的各部分进行观察和控制。同时可通过按键板或红外遥控器对系统进行控制。
&&& (2)检测模块又分为声音检测、尿湿检测和温度检测。分别对婴儿是否睡醒、婴儿是否尿湿、奶水温度分别给89C52对应的信号。其中各个检测模块均受系统控制。
&&& (3)遥控模块采用NEC制式红外遥控,可遥控MP3解码的播放模式、音乐效果、选歌、音量、系统的时间调节各个模块的控制和协调。
&&& (4)显示部分采用LCD12864液晶屏显示,可显示时间、倒计时时间、奶瓶温度、湿度状态。
&(5)执行机构又分为机械执行和声音执行,从而更完美地模拟出人的效果。
3、空调器已广泛应用于社会的各种场合,直流变频空调器因具有节能、低噪、恒温控制、全天候运转、启动低频补偿、快速达到设定温度等性能,使空调的舒适性大大提高,将越来越受到人们的喜爱。单片机技术的广泛应用,直流变频技术及模糊控制技术在空调器嵌入式控制领域的成功应用,半导体功率器件的迅速发展为直流变频控制的推广提供了技术保障。
二、低碳化 2010世博会已逐渐离我们远去,但是上海世博会的理念一直与我们紧密相连。
1、低功耗CMOS化   
?? MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺) ,由于CHMOS技术的进小,大大地促进了单片机的CMOS化。CMOS电路的特点是低功耗、高密度、低速度、低价格。CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。所以我相信这种工艺将是今后一段时期单片机发展的主要途径。
2、低电压化 几乎所有的单片机都有WAIT、STOP等省电运行方式。允许使用的电压范围越来越宽,一般在3~6V范围内工作。低电压供电的单片机电源下限已可达1~2V。目前0.8V供电的单片机已经问世。
3、低噪声与高可靠性 为提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片厂家在单片机内部电路中都采用了新的技术措施。
三、高性能化 主要是指进一步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集(RISC)结构和流水线技术,可以大幅度提高运行速度。现指令速度最高者已达100MIPS(Million Instruction Per Seconds,即兆指令每秒),并加强了位处理功能、中断和定时控制功能。这类单片机的运算速度比标准的单片机高出10倍以上。由于这类单片机有极高的指令速度,就可以用软件模拟其I/O功能,由此引入了虚拟外设的新概念。
四、异步串行扩展技术化。在用单片机开发各种嵌入式应用系统时,异步串行通信是经常要用到的一种通信模式,很多应用中还要求实现多路异步串行通信。大家平时熟悉的各种厂家的单片机,绝大部分片上只提供一个硬件UART模块,利用它可以方便实现一路串行通讯。PIC系列单片机也不例外,在其丰富的产品家族成员中,除高端系列(PIC17/18)一些型号片上带有两路硬件UART模块外,其它大部分型号片上只有一路UART,一些低端廉价的PIC单片机甚至还不带硬件UART。为了提高系统的性能价格比,就要求设计工程师用软件增加实现一路或多路异步串行通信。很多工程师对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是看软件采用何种方式来实现可靠的UART功能。&
随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。
大家好,欢迎来到我的小站!
站长在关注安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&如何学STM32- -十年经验教你如何学习嵌入式系统
> 如何学STM32- -十年经验教你如何学习嵌入式系统
如何学STM32- -十年经验教你如何学习嵌入式系统
  一、如何学习- - 的概念本文引用地址:  着重理解“嵌入”的概念 ,主要从三个方面上来理解。  1、从上,“嵌入”将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。比较高端的类Intel Xscale架构下的IXP网络处理器CPU内部集成PCI控制器(可配成支持4个PCI从设备或配成自身为CPI从设备);还集成3个NPE网络处理器引擎,其中两个对应于两个MAC地址, 可用于网关交换用,而另外一个NPE网络处理器引擎支持DSL,只要外面再加个PHY芯片即可以实现DSL上网功能。IXP系列最高主频可以达到 1.8G,支持2G内存,1G×10或10G×1的以太网口或Febre channel的光通道。IXP系列应该是目标基于体系统结构下由 intel进行整合后成Xscale内核的最高的处理器了。  2、从软件上前,嵌入就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中。而在定制操作系统内核时所选择的应用程序组 件就是完成了软件的“嵌入”,比如WinCE在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择 了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。  3、把软件内核或应用文件系统等东西烧到平台中的ROM中就实现了一个真正的“嵌入”。  以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在“嵌入式”这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科  二、如何学习嵌入式系统- -嵌入式系统的分层与专业的分类。  嵌入式系统分为4层,层、、操作系统层和。  1、,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的走起来相对容易,硬件层也是的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。  硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口_技术、微机原理及接口_技术、C语言。  2、 ,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导 至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的 驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不 就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可 是最高的。  嵌入式的驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。  3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。  4、,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环 境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌 入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂, 并且有难度了。  三、如何学习嵌入式系统- -目标与定位。  先有目标,再去定位。  学 ,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于 API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接 口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。  因此对于初学者必然要把握住方向,自己学习嵌入式系统的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。  如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。  对 于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层面上那个层面上来讲都是有高人存在,当然高人也对应 的高工资,我是做硬件层的,以前每月工资中个人所得税要被扣上近3千大元,当然我一方面充当工程师的角色,一方面充当主管及人物的角色,两个职位我一个人 干,但上班时间就那些。硬件这方面上可能与我PK的人很少了,才让我拿到那么多的工资。  四、如何学习嵌入式系统- -开发系统选择。  很 多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好, 我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计 与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,那当然处理器性能越高越好了,但嵌入式系统这个东西自学,有十分大的困难,不是几个月或半年 或是一年二年能搞定的事。  在某种意义上请,ARM7与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。  ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将 Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他 搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作 系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。  而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们那你以后就业成功的机率就越高,这就是招聘时 所说的有无“相关技能”,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小 公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经 验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年ARM出现,我一天始做ARM7,然后 直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。  我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪?因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者,有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM都做用得烂了,但对于初学者来,就却是件好事。  因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。  五、如何学习嵌入式系统- -成为高级嵌入式系统硬件工程师要具备的技能。  对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。  另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,DSP类,FPGA类, 国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。 DSP硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极 大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单 的连接,比如PXA255处理器I2C要求速度在100Kbps,如果把一个I2C外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失 败。这样的情况有很多,比如51单片机可以在总线接 LCD,但为什么这种LCD就不能挂在ARM的总线上,还有ARM7总线上可以外接个Winband的SD卡控制器,但为什么这种控制器接不到ARM9或 是Xscale处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计 出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片, 直接更换成LDO,有时就会把CPU烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS设备做下程序优化,我问了一下情况,地 图是存在SD卡中的,而SD卡与PXA255的MMC控制器间采用的SPI接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序 的问题,因此我提了几条建议,让他们更新试下再说。因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你 终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计PCB绘 制,逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD工程师,就是专业的画PCB板的工程师,和EMC设计工程师,帮 人家解决EMC的问题。硬件工程师再往上就是板级测试工程师,就是C语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行 验证。然后再交给基于操作系统级的驱动开发人员。  总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。  那么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握EDA设计的辅助工具类如ProtelORCADPowperPCBMaplux2ISE、 VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工 程师了。  硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。
51单片机相关文章:
c语言相关文章:
电路图符号相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一}

我要回帖

更多关于 单片机直接控制可控硅 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信