- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SD卡在智能车调试系统中应用
SD卡在智能车调试系统中应用 【摘要】本文介绍了如何利用SD卡实时记录摄像头智能车高速运行下单片机处理的图像与各个参数,以及如何在PC端建立SD卡上位机把所记录的参数信息还原出来。 【关键词】SD卡;智能车;上位机 1.引言 SD卡(Secure Digital Memory Card)是一种基于半导体快闪记忆器的新一代记忆设备。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制,具有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性及兼容MMC卡等特点。它的出现提供了一个便宜的、结实的、卡片式的存储媒介,它的容量从16MB到32GB不等,可为众多应用提供足够的外部存储空间。 如今“飞思卡尔”杯全国大学生智能汽车竞赛已经有七年的历史,更快、更稳一直是竞赛的主题,而要智能车变得更快、更稳,一个好的调试系统是必不可缺的,现阶段普遍应用的调试手段有BDM、串口、蓝牙与NRF系列无线收发模块,然而这四种方式都有着很大的局限性,先不论BDM与串口传输需要有线连接的问题,这四种调试手段的传输速度皆不能在不影响智能车稳定运行情况下实时记录MCU内部处理的数据。相对以上四种调试手段,SD卡有明显的传输优势。首先它体积小、容量大、便于安装与拆卸,只需要一个简单的硬件电路即可实现SD卡插槽与单片机的连接,理论最大传输速率为25Mbit/s(单线)。再借助上位机把存储在SD卡扇区里的数据在PC端还原出来,这就方便了数据的离线分析。 2.SD卡数据的写入 2.1 SD卡与单片机的连接 SD卡有两种总线模式――SD模式与SPI模式。SD模式可以采用四根数据线(DAT0-DAT3)进行数据传输,SPI模式只能采用单数据线(DAT0)进行数据传输,SD卡在上电初期,通过检测引脚1(DAT3)来识别使用SD模式还是SPI模式。当1脚接50kΩ上拉电阻时,卡进入SD模式;当1脚为低电平,卡则工作于SPI模式。 SPI模式相对于SD模式传输速度慢了一些,不过理论上是可以达到25M/S,在智能车调试领域里是可以满足我们的传输要求的。由于主控芯片飞思卡尔MC9S12XS128自带有SPI模式,故SD卡与单片机之间只需要四线连接,分别是数据输出端DO、片选端CS、数据输入端DI与时钟端SCLK,其分别对应MC9S12XS12的PM2、PM3、PM4与PM5。如图1所示。 2.2 SD卡的初始化 在进行SD卡的读写之前需要对SD卡进行初始化,初始化的步骤为: (1)初始化MC9S12XS128单片机SPI模式为低速状态; (2)发送至少74个时钟; (3)循环连续发送CMD0,直到SD卡返回0x01,进入空闲状态; (4)发送CM55,应返回0x01,否则错误返回,得到0x01后发ACMD41,应得到返回值0x00,否则重复这一步骤(上限400次)直到得到0x01; (5)设置SPI为高速模式; (6)发送CMD16设置块大小为512字节,这样就实现了SD卡的初始化。接下来就可以实现SD卡扇区的读写操作了。 2.3 SD卡扇区的读写 以单扇区写数据为例: (1)先设置为高速模式; (2)发送CMD24命令应得到正确响应0x00; (3)片选置低并发3个空数据,等待SD卡准备好; (4)发送起始令牌0xFE; (5)放入要写入一个扇区中的数据; (6)发2个字节CRC校验等待操作完成; (7)片选置高。 需要注意的是,Kingston 1G的SD卡第0扇区是启动扇区,从0扇区开始写会出现错误,所以一般要从比较大一点的扇区开始写数据,笔者是从第103730个扇区开始读写的。 3.Visual C++读取SD卡扇区数据并写入文件 3.1 Windows下C++读取SD卡扇区数据 Windows下可以把所有的硬件设备当成“文件”,并用文件I/O函数对其进行数据存取访问。以文件句柄方式指定一个包含全路径的文件名后,就可以要求操作系统打开这个文件并返回一个文件句柄,以后就可以用这个句柄来读写文件,直到关闭文件为止。操作系统在内部为每个文件句柄分配一个读写指针,指示文件读写的位置,每次对文件的读写操作完成以后,指针会自动调整到本次操作的最后一个字节后面的位置。指针也可以被移动到文件的任意位置,以便满足不同情况存取的要求。 Windows系统处理文件的一般步骤为: (1)首先利用CreateFile()函数打开文件,并返回文件句柄; (2)用SetFilePointer()函数调整文件指针转移到要操作的磁盘扇区处; (3)用ReadFile()函数从指定位置开始读取文件; (4)最后用CloseHandle()关
文档评论(0)