松下吸尘器哪款好mcu360清洗

电池成本占过半车价 特斯拉替松下打工
> 电池成本占过半车价 特斯拉替松下打工
电池成本占过半车价 特斯拉替松下打工
  作为最便宜的,MODEL 3预订量现已经超过37万辆,要知道这可是预售两年后的产品,为保证能按时供货,官方甚至不得不砍掉一部分重复的订单。本文引用地址:
  尽管的销售一直异常火爆,但从特斯拉成立到至今,都没有实现过真正盈利,一直处于亏损状态。然而作为特斯拉目前唯一的电池供应商,电器却赚得盆满钵满。
  据公开资料显示,特斯拉MODEL S电池容量为85KWH,采用了AH的18650型电池。特斯拉工程师通过有效的电力管理系统解决了三元锂电池安全问题,其电池价格为416美元/KWH。
  因此特斯拉P85的电池成本为35360美元,相比85070美元的售价,就电池成本占了车价的41.6%。要知道这35360美元可是特斯拉电池成本的采购价,若抛开MODEL S P85的销售利润,那电池至少占MODEL S制造成本的50%以上,甚至更多。
  显然,特斯拉目前至少50%或者以上的利润被赚走了,特斯拉亏损也就是理所当然的事情。2015年特斯拉全年销量仅为5.05万辆,而这样的销量根本无法分担高额的运营成本,更加无法分摊当初投入的巨额研发成本。同时,由于无法实现规模经济,其边际成本更是一直居高不下。
  因此,作为特斯拉三级阶梯式发展战略的第二梯次,MODEL S造成企业亏损是必然的。毕竟MODEL S的价格快接近十万美元了,这已和传统D级豪华车一个等级。相比传统D级车有着将近半个世纪的技术沉淀以及市场基础,MODEL S显然还无法直接与之竞争。
  MODEL 3如此异常的火爆销量,让特斯拉一方面谋求自建电池超级工厂,一方面不得不去寻求新的电池合作伙伴。目前,特斯拉已经和韩国LG化学、三星、以及SK进行了商务会谈。LG化学曾表态说,&期望赢得与特斯拉业务上的合作,并且承诺提供一个好的价格和供货周期&。
  日前,特斯拉CEO马斯克已经将原计划2020年生产50万辆电动汽车的目标提前到了2018年。尽管部分业内人士认为特斯拉无法完成,但从马斯克寻求更多供应商的动作来看,这一生产计划目前已在慢慢进行中。而MODEL 3这样用来冲量的产品如果真正能为特斯拉带来规模经济效应的话,或许为电池供应商打工的命运就快结束了。
  事实上,目前国内多数自主电动乘用车即使政府给了很大补贴也并无多少利润,很大一方面原因也是因为电池成本高昂,而比亚迪自产自销的电动车模式则取得了丰厚的利润,这或许是电池代工出身的比亚迪能在电动车领域脱颖而出的关键原因。特斯拉现在似乎也领悟了过来,开始与松下联合建超级电池工厂了。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一后使用快捷导航没有帐号?
只需一步,快速开始
交易诚信度0
主题帖子威望
中级会员, 积分 15, 距离下一级还需 5 积分
交易诚信度0
马上注册 家电论坛,众多有奖活动等你来参与!
才可以下载或查看,没有帐号?
松下2010年全系列产品型号、上市时间和官方报价.看了看大家的回贴,关于3D产品打包送礼的问题公司有考虑,这个视市场而定,主要是看竞争对手的促销方案,这个应该不会让大家失望!!!{VD系列即为国内的3D版型号!考虑到消费结构不同,VD和国外上的VT还是有所区别的!!}关于松下的3D产品和其他品牌的3D产品比较熟优熟劣的问题,坛子里有不少高人,这个我就不做评论了,要不又吵翻天!松下已卖下3D版阿凡达的版权来制做演示片,届时松下的3D机器上市时大家可到各地的AA级门店去体验一下.
L32C20C-2010.9-2990
L32U20C-2010.5-80)
L32X20C-2010.5-3690
L42U20C-2010.6-80)
L42D25C-2010.7-x1080)
L37D25C-2010.7-x1080)
L32D25C-2010.7-80)
P42G20C-2010.6-9490
P42C22C-2010.7-4990
P46G20C-2010.6-11990
P50G20C-2010.6-13990
P50X20C-2010.6-6990
P58S20C-2010.9-19990
P65S20C-2010.9-24990
P42S25C-2010.7-6990
P46S25C-2010.7-8990
P50S25C-2010.7-10990
P50VD20C-2010.9-19990
P65VD20C-2010.10-49990
[ 本帖最后由 电器先生 于
23:51 编辑 ]
交易诚信度0
主题帖子威望
新手上路, 积分 0, 距离下一级还需 1 积分
交易诚信度0
交易区新帖推荐
58寸的只有一款
金钱353324
交易诚信度0
主题帖子威望
中级会员, 积分 6, 距离下一级还需 14 积分
交易诚信度0
日本本土的42寸D2系LCD TV拖到9月发售,天朝这边7月发售??日本公司现在都不流行把最好的留在国内了么.......
交易诚信度0
主题帖子威望
初级会员, 积分 1, 距离下一级还需 4 积分
交易诚信度0
P50VD20C-90
P65VD20C-90
我#¥%……
竟然没有v20 [s:16]
打日本我捐一年工资...
金钱120342
交易诚信度0
主题帖子威望
初级会员, 积分 3, 距离下一级还需 2 积分
交易诚信度0
P50VD20C送蓝光和3D眼镜吗?
交易诚信度0
主题帖子威望
初级会员, 积分 1, 距离下一级还需 4 积分
交易诚信度0
眼镜不送你怎么看。。。
送蓝光那是做梦啊。。。话说19990已然比日本便宜1w+了
交易诚信度0
主题帖子威望
中级会员, 积分 15, 距离下一级还需 5 积分
交易诚信度0
松下的3D眼镜相当不错!而且充分考虑了人机工效,即使你配戴普通眼镜也能戴上观看!
交易诚信度0
主题帖子威望
初级会员, 积分 1, 距离下一级还需 4 积分
交易诚信度0
眼镜是不错,可惜不能充电。。。
看来今年的选择只能是P50VD20C了 松下为了推3d不择手段啊[s:29]
交易诚信度0
主题帖子威望
新手上路, 积分 0, 距离下一级还需 1 积分
交易诚信度0
谢谢电器先生提供这些信息,如有新品的相关参数说明表了,希望及时发布。看来还是等等50S25C了,反正现在也不急!
交易诚信度0
主题帖子威望
新手上路, 积分 0, 距离下一级还需 1 积分
交易诚信度0
松下MCU---多UART口、大容量、多I/O口,内带LCD显示,内带AD定时器内置PWM等
松下MCU---多UART口、大容量、多I/O口,内带LCD显示,内带AD定时器内置PWM等
松下主要特点:多UART口、大容量、多I/O口,内带LCD显示,内带AD、中断、定时器内置PWM等;更重要的是我们有强有力的技术支持!型号有:
1). MN101EF52AXW(32Pin, 内置PWM, 24个I/O口,32K ROM,1K RAM,1个UART,3个SPI,1个IIC,内带AD、中断、定时器等);
2). MN101EF51AXW(44Pin, 内置PWM, 37个I/O口,32K ROM,1K RAM,2个UART,3个SPI,1个IIC,内带AD、中断、定时器等);
3). MN101EF32DXW(64Pin, 54个I/O口,64K ROM,4K RAM,2个UART,3个SPI,2个IIC,4*32的LCD显示,内带AD、中断、定时器等);
4). MN101EF31DXW(80Pin, 70个I/O口,64K ROM,4K RAM,3个UART,4个SPI,2个IIC,4*41的LCD显示,内带AD、中断、定时器等).
5). MN101EF31GXW(80Pin, 70个I/O口,128K ROM,6K RAM,4个UART,4个SPI,2个IIC,4*41的LCD显示,内带AD、中断、定时器等);
6). MN101EF29GXX(100Pin,内置PWM,90个I/O口,128K ROM,6K RAM,4个UART,4个SPI,2个IIC,4*55的LCD显示,内带AD、中断、定时器等);
衷心的期望我们的服务能为您的工作带来便捷!谢谢!
& && && && && &&&
联系人:蒙先生&&TEL:&&EMAIL:robert..hk 或者
& && && && && & QQ:& && &MSN:
金钱269272
交易诚信度0
主题帖子威望
高级会员, 积分 28, 距离下一级还需 22 积分
交易诚信度0
哦,VT20的型号被改成VD20啦??[s:31] 真是一个超级另类呀!全球唯独天朝这么
还有那个50VD20卖19999,是送两副3D眼镜,还有那个价值4000元的3D蓝光
播放器BDT3000吗?没记错的话,应该还有一张3D蓝光演示碟还有一张
3D版的冰河世纪3的蓝光!如果真是这样的话,那么这台松下3D旗舰等离子
的定价和松下在老美那边的定价是一样的!!那松下今年就诚意十足啦![s:97]
另外,那个D系列的液晶只有日本本土延迟发售,其他各地都是七月上!
下面是香港那边开卖的价格!
真係估佢唔到架仔要延遲發售港版即時開賣
生果報廣告:
怕老會開售
TH-L42D25H HK$17,980.00
寫住-可透過USB外接硬碟進行錄影功能
估計員工價會賣皮3、4啦凶宅皮6多少少掛
後補圖[tr][/tr]
[ 本帖最后由 潜龙谍影snake 于
23:20 编辑 ]
交易诚信度0
主题帖子威望
初级会员, 积分 1, 距离下一级还需 4 积分
交易诚信度0
50VD20的看3D电源只能搬个凳子坐在电视机前看了[s:106]
65VD正好合适,可惜那价格...
交易诚信度0
主题帖子威望
新手上路, 积分 0, 距离下一级还需 1 积分
交易诚信度0
V系列真没有了?伤心啊
交易诚信度0
主题帖子威望
初级会员, 积分 1, 距离下一级还需 4 积分
交易诚信度0
V系列真没有了?伤心啊
就是啊,现在为了3D 还得把功放,HTPC都升到1.4[s:118]
交易诚信度0
主题帖子威望
新手上路, 积分 0, 距离下一级还需 1 积分
交易诚信度0
P46G20C-90
活动推荐 /1
对于SONY的hifi音响粉,来了听数播(硬盘网络播放机:HAP-Z1ES /HAP-S1),听黑胶(黑胶唱机:PS-HX500),研究一下SONY今年最新推出的旗舰音箱(NA2ES落地音箱),是不是感觉不亦乐乎?玩大了就再玩小的(微HIFI音乐系统:CAS-1)。
Powered by智能吸尘器_安泰迪智能扫地机_松下智能吸尘器
9:17:14 浏览 15 次
提示:要求预付定金、汇款或网上交易等方式请勿相信,谨防上当受骗!
公司名称:
联 系 人:李经理
联系电话: 归属地:福建 厦门
电子邮件:
联系地址:福建省厦门是海沧区新阳街道办霞阳路39号
发布时间:日
厦门安泰迪智能家居有限公司,坐落于风光旖旎有着海上花都美称的福建省厦门市。是一家集研发、设计、生产为一体的高新技术企业。占地面积50000多平方米,目前拥有员工2000多人。公司与德国莱茵金属集团;比亚迪集团;欧洲意法半导体公司;东南机器人研究所;厦门大学;哈尔滨工业大学等著名机构均有深度合作。为全球300余家品提供过OEM、ODM、生产制造、技术革新以及研发方案等服务。公司通过了全球300余项各类认证,自主专利近百项。产品已通过了CCC,CB,CE,RoHS,ETL认证,并顺利通过了ISO:9001的质量管理体系认证。公司各项工作都获得了丰硕的成果,先后被评为《质量 服务 诚信AAA企业》《AAA级信用单位》《中国自主创新品牌》《绿色节能环保推广产品》等荣誉。公司热诚欢迎各界朋友莅临公司参观指导洽谈业务。特点:数字电源系统的主要特点数字电源系统具有以下特点。1)它是以数字信号处理器(DSP)或微控制器(MCU)为核心,智能吸尘器,将数字电源驱动器及PWM控制器作为控制对象而构成的智能化开关电源系统。传统的由微控制器(μP或μC)控制的开关电源,一般只是控制电源的启动和关断,并非真正意义的数字电源。2)采用“整合数字电源”(Fusion Digital Power)技术,实现了开关电源中模拟组件与数字组件的优化组合。例如,功率级所用的模拟组件——MOSFET驱动器,可以很方便地与数字电源控制器相连并实现各种保护及偏置电源管理,而PWM控制器也属于数控模拟芯片。3)高集成度,实现了电源系统单片集成化(Power system on chip),将大量的分立式元器件整合到一个芯片或一组芯片中。4)能充分发挥数字信号处理器及微控制器的优势,使所设计的数字电源达到高技术指标。例如,其脉宽调制(PWM)分辨力可达150ps(10-12s)的水平,这是传统开关电源所望尘莫及的。数字电源还能实现多相位控制、非线性控制、负载均流以及故障预测等功能,为研制绿色节能型开关电源提供了便利条件。5)便于构成分布式数字电源系统。发展现状数字电源系统的发展现状随着现代科技事业的发展及开关电源市场的需求,在21世纪初国际上开始研制数字电源系统。2005年3月,美国德州仪器公司(TI)宣布推出具有创新型的数字电源产品,不仅能显著提高电源系统的性能,还可大幅度延长其使用寿命。该公司还展示了Fusjon Digital Powe解决方案,以证明数字电源系统能以极具竞争力的低成本,实现高性能指标及设计灵活性。该解决方案包括以下3类芯片:1)UCD7K系列数字电源驱动器(含UCD7100和UCD7201);2)UCD8K系列PWM控制器(含UCD8620和UCD8220);3)UCD9K系列数字信号处理器(UCD)。上述芯片已形成系列化产品,于2005年秋季正式销售。该产品支持包括从AC线路到负载的电源系统,可广泛用于电信设施、计算机服务器、数据中心电源系统及不间断电源(UPS)等。 厦门安泰迪智能家居有限公司,坐落于风光旖旎有着海上花都美称的福建省厦门市。是一家集研发、设计、生产为一体的高新技术企业。占地面积50000多平方米,目前拥有员工2000多人。公司与德国莱茵金属集团;比亚迪集团;欧洲意法半导体公司;东南机器人研究所;厦门大学;哈尔滨工业大学等著名机构均有深度合作。为全球300余家品提供过OEM、ODM、生产制造、技术革新以及研发方案等服务。公司通过了全球300余项各类认证,自主专利近百项。产品已通过了CCC,CB,CE,RoHS,ETL认证,并顺利通过了ISO:9001的质量管理体系认证。公司各项工作都获得了丰硕的成果,先后被评为《质量 服务 诚信AAA企业》《AAA级信用单位》《中国自主创新品牌》《绿色节能环保推广产品》等荣誉。公司热诚欢迎各界朋友莅临公司参观指导洽谈业务。无绳吸尘器也被成为无线吸尘器、无尾吸尘器。无绳吸尘器是一种新型吸尘器,它不需要电源线就能完成吸尘工作。它跟手机一样是通过充电器保持机器运行,一般需要充电4-10个小时即可完成充电,可持续工作20-30分钟。随着国内生活水平的不断提高,无绳吸尘器渐渐走入寻常百姓家,并且正在逐步的被更多的人们接受,而在欧美的一些国家选择无绳吸尘器的概率达到了85%,无绳吸尘器将会在不久的未来也会像白色家电一样成为每个家庭必备的清洁家电,而不只是“劳动工具”的范畴。无绳吸尘器内置驱动电机,飞利浦智能吸尘器,打开吸尘器开关运行机器,益节-地贝智能吸尘器,无绳吸尘器将会按照人类的拖动进行清扫工作,松下智能吸尘器,无电源线牵制,无论是清洁地面还是清洁门窗缝隙也或是清洁汽车都十分自由。与有线吸尘器对比,无绳吸尘器是为追求高效、便利的人量身定制,你可以在不同的房间清扫,清洁半径得到无限拓展。从客厅延伸到卧式,不再有电源的牵绊;从沙发底下到墙角,立式、手持两用,一部无绳吸尘器就能搞定一切麻烦。无绳吸尘器可以吸瓜子壳、食物残渣、树叶、灰尘、烟头等都能轻松吸起。采用“蜂涡过滤+无纺袋”的多重过滤方式,使得吸入的尘气在尘桶中进行离心式高速转动,灰尘和空气层层分离,彻底过滤细灰粉尘,保持吸力恒久,解决市场上旧式吸尘器过滤不彻底,灰尘堵塞过滤器,吸力迅速降低,最后连头发丝都吸不起来的弊端。尘杯可轻松水洗,终身无耗材
飞利浦智能吸尘器、智能吸尘器、安泰迪智能扫地机由厦门安泰迪智能家居有限公司提供。行路致远,砥砺前行。厦门安泰迪智能家居有限公司()致力成为与您共赢、共生、共同前行的战略伙伴,更矢志成为吸尘器较具影响力的企业,与您一起飞跃,共同成功!
厦门安泰迪智能家居有限公司,坐落于风光旖旎有着海上花都美称的福建省厦门市。是一家集研发、设计、生产为一体的高新技术企业。占地面积50000多平方米,目前拥有员工2000多人。公司与德国莱茵金属集团;比亚迪集团;欧洲意法半导体公司;东南机器人研究所;厦门大学;哈尔滨工业大学等著名机构均有深度合作。为全球300余家品提供过OEM、ODM、生产制造、技术革新以及研发方案等服务。公司通过了全球300余项各类认证,自主专利近百项。产品已通过了CCC,CB,CE,RoHS,ETL认证,并顺利通过了ISO:9001的质量管理体系认证。公司各项工作都获得了丰硕的成果,先后被评为《质量&服务&诚信AAA企业》《AAA级信用单位》《中国自主创新品牌》《绿色节能环保推广产品》等荣誉。公司热诚欢迎各界朋友莅临公司参观指导洽谈业务。
Copyright (C)
www.Ailaba.org All Rights Reserved.
版权所有 豫ICP备号-621ic官方微信
后使用快捷导航没有帐号?
查看: 1957|回复: 10
Freescale KL26 SD卡读写程序分析
&&已结帖(0)
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
& & 先了解一下SD卡和Micro SD卡的基本常识:
& & SD卡是SecureDigital Card卡的简称,直译成汉语就是“安全数字卡”,是1999年由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器材等等。 MicroSD卡(这家伙原名叫TF卡(Trans-Flashcard),2004年改的名,原来不仅人名可以改,这玩意也改名~~),是一种极细小的快闪存储器卡,由著名的存储厂商闪迪(SanDisk)公司发明创立。这种卡主要于手机使用,但因它拥有体积极小的优点,随着不断提升的容量,它慢慢开始于GPS设备、便携式音乐播放器和一些快闪存储器盘中使用。& &那么这两种卡到底有什么区别呢?其实从这哥俩的名字就能看出一些端倪,MicroSD是在SD的前面加了一个Mirco,哦哦,Micro,那就是更小的SD喽。对的,其实SD卡与MicroSD卡在功能上没区别,MicroSD卡就是SD卡的微型版,也可以看作是升级版本,既然它们关系如此密切,所以在MicroSD卡外面加个卡套(专业一点是叫做adapter,适配器),就可以把MicroSD当作SD卡来使用了。如下图所示,将右侧MicroSD卡插入左侧卡套中,之后再插入电脑SD卡槽中,就可以使用把它当作U盘来使用了。
& & 再多说两句,你应该还听说过MMC卡,它的全称叫做Multimedia Card),翻译成中文为“多媒体卡”。在1997年由西门子及SanDisk共同开发的。这玩意和SD卡又有什么关联呢?SD卡的技术是基于MMC上发展而来的,它们区别在于初始化过程不同。OK,下面看一下SD卡和Micro SD的引脚定义:& && && && && && && && && &&&
& &&&上图需要说明的是,SD卡和micro SD卡支持两种操作模式,分别为SD模式和SPI模式, SD模式速度快,安全性好,不过它需要引脚多而且主要是驱动起来复杂,当然有些MCU会自带SD模式的硬件接口,这样就方便多了,而SPI模式就方便许多了,虽然速度上没有SD模式快,不过很多MCU都自带SPI硬件资源,这样使用起来就比较方便,如果MCU不带SPI硬件接口的话,就需要使用IO口去模拟了。
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
上面两张图看着有点头晕,再来一张看起来简单一点的图:& &
&&再来对比一下它们引脚之间的关系,
&&可以发现Micro SD卡只是比SD卡少了一个VSS&&引脚,这更加证明了这两个卡时如此的关系密切。。&&了解这些概念之后,我们就开始用MCU来控制它了。首先看一下SD卡硬件电路部分:
SPI下电路的连接非常简单,接上电源线Vdd和地线Vss,再接上SPI的CS,SCLK,DI(MOSI)和DO(MISO)就可以了,其他引脚可以放空。注意SD卡的电源和操作电压都为2.7-3.6V,如果使用5V的单片机要进行电平转换或串电阻限流。还有记得SD卡的CS,SCLK和DI要用10~100K的电阻上拉,下图是SD卡的一个连接示意图,对于MicroSD卡一样的接法,只是注意下引脚的不同就行了。
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
由于本实验是在YL-KL26开发板上进行的,该板子是优龙公司做的,链接如下:,淘宝网址为:&&,售价99RMB,还挺便宜,记得我大学那会买了一个51开发板还一百多元呢。所以让我们来看一下此开发板上Micro SD卡部分的原理图:
& & 这张图有一点困惑了我老半天,那就是9脚nCD是什么玩意?刚开始我一直以为J5是一个将TF卡转换为SD卡的卡套,因为看到左侧有9个引脚,就想当然的这么认为了,结果怎么也搞不明白9脚nCD是什么功能?后来才恍然明白,J5只不是一个TF卡的卡座而已,直接上图,这玩意如下: 你如果数一数它最下侧引脚数目的话,会发现有9个引脚,这是怎么回事?之前明明说TF卡只有8个引脚,那么多出来的这个引脚是怎么回事?原来多出来的这个CD引脚具有这样的功能,平时卡座不插卡的时候,它和GND脚是断开的,当插入卡时,它就和GND连在一起了。CD原来是CardDetection的意思。可以通过这个这个脚来检测有没有卡插入。这个卡座的引脚定义如下,pin1到pin8的定义和TF卡的引脚定义是一样的,就是多了9脚.
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
硬件明白之后,下面就开始看软件部分了。 下面就来具体分析一下如何初始化及读写TF卡。还是得先补充一点基础知识,以前欠下不会的,都得还回来啊,^^SD卡的命令格式如下:
& &它由6 个字节组成,字节1 的最高2 位固定为01,低6 位为命令号(比如CMD16,为10000,完整的CMD16,第一个字节为)。字节2~5 为命令参数,共4个字节,并不是所有命令都有参数,没有参数的话该位一般就置0。最后一个字节由7bit CRC校验位和1bit停止位(该位固定为1)组成。在SPI模式下,CRC是被忽略的,可以都置1或置0.但是发送CMD0时要记得加上CRC,即最后1字节为0x95(因为发送CMD0时还未进入SPI模式,[url=]PS[/url]:CMD8也要,但一般大家都把发送CMD8省略了)。每次发送完一次命令后,SD卡都会有回应。SD卡的回应有多种格式,1字节的R1,2字节的R2等,不过一般在SPI模式中我们只用到R1,下面介绍R1的格式:
向SD卡写入一个CMD或者ACMD指令的过程是这样的: 首先使CS为低电平,SD卡使能;其次在SD卡的DI写入指令;写入指令后还要附加8个填充时钟,使SD卡完成内部操作;之后在SD卡的DO上接受回应;回应接受完毕使CS为高电平,再附加8个填充时钟。初始化的典型流程如下:1、初始化与 SD 卡连接的硬件条件(MCU 的 SPI 配置,IO 口配置);2、拉高片选,上电延时(&74 个 CLK);3、选择片选,发送CMD0命令 ,进入 IDLE状态;4、发送 CMD8,检查是否支持 2.0 协议;5、根据不同协议检查 SD 卡(命令包括:CMD55、CMD41、CMD58 和 CMD1 等);6、取消片选,发多 8 个 CLK,结束初始化。拉高CS,发送至少74个clk周期是为了使SD卡达到正常工作电压和进行同步,原因是SD卡内部有个供电电压上升时间,大概为64个CLK,剩下的10个CLK用于SD卡同步,之后才能开始CMD0的操作,在卡初始化的时候,CLK时钟最大不能超过400Khz!发送CMD0,需要收到回应0x01表示成功进入idle状态,这由上述R1的格式可以看出来。上述2,3过程可用下图来表示:
对于4,发送CMD8,它的返回格式如下:
接收到的第一个字节,如果为0x01,表示SD卡响应了CMD8命令,此卡为V2.0版本,如果不为0x01(一般会是0x05或者0x09),表示SD卡不支持CMD8命令,此卡为V1.0卡或者MMC卡。对于V2.0版本,后续还会收到4个字节,这里只需要关注最后两字节,8-11表示SD卡支持的电压范围,此处应该得到0001,最后一字节在发送CMD8指令时发来的数据,在程序中我们调用r1= SDSendCmd(CMD8,0x000001aa,0x87);这里应该收到aa.如果CMD8收到的第一个字节不是0x01的话,就不用再读后续的三个字节了。
& &对于5,如果是V2.0卡那么流程如下:不断发送CMD55+ACMD41,先发送CMD55,在收到0x01之后,再发送ACMD41,直到收到0x00表示V2.0初始化成功,进入Ready状态。再发送CMD58命令来判断是HCSD还是SCSD,到此SD2.0卡初始化成功。SD卡按容量的大小可以分为SC、HC 、XC三种类型,如下表所示:
& && &需要注意的是:SD卡和SDHC 卡协议基本兼容,但是SDXC 卡,同这两者区别就比较大了,我们讨论的主要是SD/SDHC 卡 。 对于5, 如果CMD8返回错误,表示不支持V2.0卡,则进一步判断为1.0卡还是MMC卡,方法循环发送CMD55+ACMD41,返回无错误,则为SD1.0卡,到此SD1.0卡初始化成功,如果在一定的循环次数下,返回为错误,则进一步发送CMD1进行初始化,如果返回无错误,则确定为MMC卡,如果在一定的次数下,返回为错误,则不能识别该卡,初始结束。
总结:一个完整的驱动是应该包括上述所有过程的,CMD0是必须要发送的,CMD8用来区分是否为V2.0卡,如果是V2.0,再发送CMD55+ACMD41 来确认初始化是否成功,CMD58用来区分卡容量大小。所以对于V2.0卡,完整的驱动应该包括CMD0,CMD8,CMD55+ACMD41,CMD58 这几个命令。对于V1.0卡,需要CMD0,CMD8,CMD55+ACMD41命令。对于MMC卡,需要CMD0,CMD1命令。
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
初始化完成之后,就可以进行读写操作了。SD卡读单块和多块的命令分别为CMD17和CMD18,它们的参数即要读的区域的开始地址。因为考虑到一般SD卡的读写要求地址对齐,所以一般我们都将地址转为块,并以扇区(块)(512Byte)为单位进行读写,比如读扇区0参数就为0,读扇区1参数就为1&&9(即地址512),读扇区2参数就为2&&9(即地址1024),依此类推。& &读单块方法:& &1.发送CMD17,收到0x00表示成功& &2.连续读直到读到开始字节0xFE& &3.读512个字节& &4.读两个CRC字节& &读单块时序图: 读多块方法:& &1.发送CMD18读,收到0x00表示成功& &2.连续读直到读到开始字节0xFE& &3.读512字节& &4.读两个CRC字节& &5.如果还想读下一扇区,重复2-4& &6.发送CMD12来停止读多块操作
写单块和多块:& &SD卡用CMD24和CMD25来写单块和多块,参数的定义和读操作是一样的。& &写单块方法:& &1.发送CMD24,收到0x00表示成功& &2.发送若干时钟& &3.发送写单块开始字节0xFE& &4.发送512个字节数据& &5.发送2字节CRC(可以均为0xff)& &6.连续读直到读到XXX00101表示数据写入成功& &7.继续读进行忙检测(读到0x00表示SD卡正忙),当读到0xff表示写操作完成写单块时序图:
写多块方法:& &1.发送CMD25,收到0x00表示成功& &2.发送若干时钟& &3.发送写多块开始字节0xFC& &4.发送512字节数据& &5.发送两个CRC(可以均为0xff)& &6.连续读直到读到XXX00101表示数据写入成功& &7.继续读进行忙检测,直到读到0xFF表示写操作完成& &8.如果想读下一扇区重复2-7步骤& &9.发送写多块停止字节0xFD来停止写操作& &10.进行忙检测直到读到0xFF
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
OK,SD卡驱动部分基本讲完了,下面动手跑一跑代码吧。代码的下载地址为:,下载后可以直接download到YL-KL26中。 本代码实现的功能很简单,就是将Buffer1中的数据先写入SD卡,然后再读出来存放到Buffer2中并打印出来。实验结果如下:
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
附上:sd_Driver.c的代码
/* ** File Name:& && && && && &SD_Driver.c ** Last modified date:& &&&& & ** Modified by: Wang Wenxue ** Last version:& && && && &V1.0 ** Description:& && && && &&&*/&&&&#include &SD_Drv.h&&&#include &includes.h&&&&&&&&&//set CS low&&void CS_Enable()&&{&&& & //set CS low&&& & FGPIOC_PCOR |= 1 && 4;&&}&&&&//set CS high and send 8 clocks&&void CS_Disable()&&{&&& & //set CS high&&& & FGPIOC_PSOR |= 1 && 4;& && & //send 8 clocks&&& & SDWriteByte(0xff);&&}&&&&&&//write a byte&&void SDWriteByte(INT8U data)&&{&&& & INT8U ucT&&&&while((SPI0_S & SPI_S_SPTEF_MASK) != SPI_S_SPTEF_MASK);& && && && &&&&&SPI0_DL =&&& && && &&&&&while((SPI0_S & SPI_S_SPRF_MASK) != SPI_S_SPRF_MASK);& && && && && &&&&&ucTemp = SPI0_DL;& && && && && && && && && && && && && && && && && & &&ucTemp = ucT&&}&&&&&&//read a byte&&INT8U SDReadByte()&&{&&& & INT8U data = 0x00;&&&&& & //read 8 bit(MSB)&&& & while((SPI0_S & SPI_S_SPTEF_MASK) != SPI_S_SPTEF_MASK);& && && && &&&&&SPI0_DL = 0& && && && && && && && && && && && && && && && && &&&& &&&while((SPI0_S & SPI_S_SPRF_MASK) != SPI_S_SPRF_MASK);& && && && && && &&&data = SPI0_DL;& && && && && && && && && && && && && && && && && &&&& && && && && && && && && && && && && && && && && && &}&&&&//send a command and send back the response&&INT8U SDSendCmd(INT8U cmd,INT32U arg,INT8U crc)&&{&&& & INT8U r1,time = 0;&&&&& & //send the command,arguments and CRC&&& & SDWriteByte((cmd & 0x3f) | 0x40);&&& & SDWriteByte(arg && 24);&&& & SDWriteByte(arg && 16);&&& & SDWriteByte(arg && 8);&&& & SDWriteByte(arg);&&& & SDWriteByte(crc);&&&&//read the respond until responds is not '0xff' or timeout&&& & do& & {&&&&r1 = Send_Byte( 0xff ); // ??????&&&&time++;&&& & //if time out,return&&& & if(time & 254)&& } while ( r1==0xff);&&return r1;&&&&}&&&&&&&&&&/****************************************************************************************************************************** //Function Name : SD_Init //description& &:&&//Input& && && &: None //Output& && &&&: None //Return& && &&&: 0:success //& && && && && & 1:Failure ******************************************************************************************************************************/&&INT8U SD_Init( void )&&{&&& & INT16U i = 0;&&& & while(SDReset() != 0){& && &&&& && &&&i ++;&&& && &&&if(i &= 20)& && && &&&{&&& && && && &printf(&SDReset Fail!\n\r&);& && && && && &return 1;&&& && &&&}&&& & }&&& & printf(&SDReset success!\n\r&);& && & i = 0;&&& & while(SDInit() != 0){& && & & && &&&i ++;&&& && &&&if(i &= 20)& && && &&&{&&& && && && &printf(&SDInit Fail!\n\r&);& && && && && &return 1;&&& && &&&}&&& & }&&& & printf(&SDInit success!\n\r&);& && & return 0;&&&&}&&&&&&//reset SD card&&INT8U SDReset( void )&&{&&& & INT8U i,r1,time = 0;&&&&& & //set CS high&&& & CS_Disable();&&& & & & //send 128 clocks&&& & for(i = 0;i & 16;i ++)&&& & {&&& && &&&SDWriteByte(0xff);&&& & }&&&&& & //set CS low&&& & CS_Enable();&&&&& & //send CMD0 till the response is 0x01&&& & do{&&& && &&&r1 = SDSendCmd(CMD0,0,0x95);&&& && &&&time ++;&&& && &&&//if time out,set CS high and return r1&&& && &&&if(time & 254)&&& && &&&{&&& && && && &//set CS high and send 8 clocks&&& && && && &CS_Disable();&&& && && && &return r1;&&& && &&&}&&& & }while(r1 != 0x01);&&&&& & //set CS high and send 8 clocks&&& & CS_Disable();&&&&& & return 0;&&}&&&&&&//initial SD card(send CMD55+ACMD41 or CMD1)&&INT8U SDInit()&&{&&& & INT8U r1,time = 0;&&&&& & //set CS low&&& & CS_Enable();&&&&& & //check interface operating condition&&& & r1 = SDSendCmd(CMD8,0x000001aa,0x87);&&& && && & //if support Ver1.x,but do not support Ver2.0,set CS high and return r1&&& & if(r1 == 0x05)&&& & {&&& && &&&//set CS high and send 8 clocks&&& && &&&CS_Disable();&&& && &&&return r1;&&& & }&&& & //read the other 4 bytes of response(the response of CMD8 is 5 bytes)&&& & r1=SDReadByte();&&& & r1=SDReadByte();&&& & r1=SDReadByte();&&& & r1=SDReadByte();&&&&& & CS_Disable();&&& & CS_Enable();&&& & do{&&& && &&&//send CMD55+ACMD41 to initial SD card&&& && &&&do{&&& && && && &r1 = SDSendCmd(CMD55,0,0xff);&&& && && && &time ++;&&& && && && &//if time out,set CS high and return r1&&& && && && &if(time & 254)&&& && && && &{&&& && && && && & //set CS high and send 8 clocks&&& && && && && & CS_Disable();&&& && && && && & return r1;&&& && && && &}&&& && &&&}while(r1 != 0x01);&&& && && & & &&&CS_Disable();&&& &&&CS_Enable();&&&&& && &&&r1 = SDSendCmd(ACMD41,0xxff);&&&&& && &&&//send CMD1 to initial SD card&&& && &&&//r1 = SDSendCmd(CMD1,0x00ffc000,0xff);&&& && &&&time ++;&&&&& && &&&//if time out,set CS high and return r1&&& && &&&if(time & 254)&&& && &&&{&&& && && && &//set CS high and send 8 clocks&&& && && && &CS_Disable();&&& && && && &return r1;&&& && &&&}&&& & }while(r1 != 0x00);&&&&& & //set CS high and send 8 clocks&&& & CS_Disable();&&&&& & return 0;&&}&&&&&&
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:0.20
主题帖子积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
助理工程师, 积分 1263, 距离下一级还需 737 积分
&&&&//read a single sector&&INT8U SDReadSector(INT32U addr,INT8U * buffer)&&{&&& & INT8U r1;&&& & INT16U i,time = 0;&&&&& & //set CS low&&& & CS_Enable();&&&&& & //send CMD17 for single block read&&& & r1 = SDSendCmd(CMD17,addr && 9,0x55);&&& & //if CMD17 fail,return&&& & if(r1 != 0x00)&&& & {&&& && &&&//set CS high and send 8 clocks&&& && &&&CS_Disable();&&& && &&&return r1;&&& & }&&&&& & //continually read till get the start byte 0xfe&&& & do{&&& && &&&r1 = SDReadByte();&&& && &&&time ++;&&& && &&&//if time out,set CS high and return r1&&& && &&&if(time & 30000)&&& && &&&{&&& && && && &//set CS high and send 8 clocks&&& && && && &CS_Disable();&&& && && && &return r1;&&& && &&&}&&& & }while(r1 != 0xfe);&&&&& & //read 512 Bits of data&&& & for(i = 0;i & 512;i ++)&&& & {&&& && &&&buffer = SDReadByte();&&& & }&&&&& & //read two bits of CRC&&& & SDReadByte();&&& & SDReadByte();&&&&& & //set CS high and send 8 clocks&&& & CS_Disable();&&&&& & return 0;&&}&&&&&&&&//write a single sector&&INT8U SDWriteSector(INT32U addr,INT8U * buffer)&&{&&& & INT16U i,time = 0;&&& & INT8U r1;&&&&& & //set CS low&&& & CS_Enable();&&&&& & do{&&& && &&&do{&&& && && && &//send CMD24 for single block write&&& && && && &r1 = SDSendCmd(CMD24,addr && 9,0xff);&&& && && && &time ++;&&& && && && &//if time out,set CS high and return r1&&& && && && &if(time & 254)&&& && && && &{&&& && && && && & //set CS high and send 8 clocks&&& && && && && & CS_Disable();&&& && && && && & return r1;&&& && && && &}&&& && &&&}while(r1 != 0x00);&&& && &&&time = 0;&&&&& && &&&//send some dummy clocks&&& && &&&for(i = 0;i & 5;i ++)&&& && &&&{&&& && && && &SDWriteByte(0xff);&&& && &&&}&&&&& && &&&//write start byte&&& && &&&SDWriteByte(0xfe);&&&&& && &&&//write 512 bytes of data&&& && &&&for(i = 0;i & 512;i ++)&&& && &&&{&&& && && && &SDWriteByte(buffer);&&& && &&&}&&&&& && &&&//write 2 bytes of CRC&&& && &&&SDWriteByte(0xff);&&& && &&&SDWriteByte(0xff);&&&&& && &&&//read response&&& && &&&r1 = SDReadByte();&&& && &&&time ++;&&& && &&&//if time out,set CS high and return r1&&& && &&&if(time & 254)&&& && &&&{&&& && && && &//set CS high and send 8 clocks&&& && && && &CS_Disable();&&& && && && &return r1;&&& && &&&}&&& & }while((r1 & 0x1f)!= 0x05);&&& & time = 0;&&&&& & //check busy&&& & do{&&& && &&&r1 = SDReadByte();&&& && &&&time ++;&&& && &&&//if time out,set CS high and return r1&&& && &&&if(time & 60000)&&& && &&&{&&& && && && &//set CS high and send 8 clocks&&& && && && &CS_Disable();&&& && && && &return r1;&&& && &&&}&&& & }while(r1 != 0xff);&&&&& & //set CS high and send 8 clocks&&& & CS_Disable();&&&&& & return 0;&&}&&
主题帖子积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:1.00
主题帖子积分
主题帖子积分
初级技术员, 积分 72, 距离下一级还需 28 积分
初级技术员, 积分 72, 距离下一级还需 28 积分
主题帖子积分
专家等级:结帖率:66%
主题帖子积分
初级技术员, 积分 72, 距离下一级还需 28 积分
初级技术员, 积分 72, 距离下一级还需 28 积分
总结的非常好,对于入门SD卡很有帮助
主题帖子积分
高级技术员, 积分 835, 距离下一级还需 165 积分
高级技术员, 积分 835, 距离下一级还需 165 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 835, 距离下一级还需 165 积分
高级技术员, 积分 835, 距离下一级还需 165 积分
写sd卡和写内部flash有什么区别呢?
技术奇才奖章
人才类勋章
时间类勋章
沉静之湖泊
发帖类勋章
无冕之王奖章
等级类勋章
热门推荐 /4}

我要回帖

更多关于 戴森吸尘器清洗 的文章

更多推荐

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

点击添加站长微信