论文研究-基于VxWorks的SPI接口芯片MCP2510的驱动程序设计 .pdf

所需积分/C币:10 2019-08-15 13:43:28 221KB .PDF

基于VxWorks的SPI接口芯片MCP2510的驱动程序设计,谷新尧,梁作生,本文结合具体的网关设备KT700介绍了基于VxWorks 的SPI接口芯片MCP2510的驱动程序设计,并给出了部分驱动程序的核心代码。本设备驱动程序编
山国武技文在线 驱动程序设计 初始化部分 系统在上电后一般要在 ()函数中对各改备进行初始化然后载入各设备驱动。 对」设备来说初始化部分要做的工作有两方面一是要对的寄存器进行设置,使 的接∏能够止常⊥作通过接∏对 芯片进行配置,使之能够止常工作。 的寄存器设置包括对位定时寄存器,验收屏蔽寄存器,验收滤波寄存器,接受缓 冲控制寄存器,中断使能寄存器的设置。二是对中断服务程序的挂接 对寄存器的设置可以按照 数据手册上对接口的配置步骤进行配置。 主要包扦对参数中的接口的起始地址相对于的偏移量的设置,接口的 配置,以及发送和接受的配置 接口配置成功后,按照 数据手册上提供的时序,通过 区数对 芯片的寄存器进行配置。首先应该对 芯片进行复 位设置,然后把该芯片设置成在配置工作模式下。然后对位定时寄存器,验收屏蔽寄存器, 验收滤波寄存器,接受缓冲控制寄存器,最后置芯片在正常工作模式卜 对中断服务程序的挂接主要在 目录中的 中的 函数中完成 的作用 是将中断服务程序与中断向量关联起米。在这里接凵的中断服务程序是 函数 通过 函数可以将 函数和它对应的中断向量 关联起来。通过传 递到的参数 可以确定是接口进行数据传输时产牛的中 断。其中的 是中断号在 文件中定义而通过 将中 断号映射到中断向量表中的指定位冒。 发送与接受 在编写接口收发程序之前必须眀确收发数据的流程。上文提过我们接收数据采用中 断方式。当数据进入 的接受收缓冲尜中会根据触发级别产生中断信号。 根据 中断向量找到相应的中断服务程序。在中断服务程序中我们要做的工作是把底层通过接 ∏接收到的数据向上层传送传送到层的环肜缓冲队列中。而应用程序会调用 函数来读取由驱动程序传送到环形队列中的数据。可见驱动程序开发者要做的工作是编写 。通过如下代码可以将底层数据传送到环形队列中 从 的接受缓冲器中读取接受到的数据 将接收数据送至接收环形队列中 其中 是冋调 函数指针。所谓回调就是冋过头调用上 层函数的意思。这个函数指针实际指向的是中的 函数。把数据从控制 器接受缓冲区送到环形队列中的任务是由 完成的。因为 处在上层所以调用 它被称为凹调。 与接收回调函数对应的还有发送回调函数 它的回调函数指针为 。发送数据是接收数据的逆过程发送数据时,发送缓冲区满则会产生一个发送 山国武技文在线 中断程序跳入中断服务程序,这样只要在发送了程序 ()中启动发送: 然后在中断服务程序中通过一个循环语句将数据发送到 的发送缓冲区 中。具体实现代码如下 将数据从发送环形队列中取出 取出的数据送到发送缓冲器 在需要发送数据的时侯只要在应用稈序中运行 函数就可以通过驱动程序把要发送 的数据送至控制器 的发送缓冲器中。 上层接口函数 在上层应用程序中,主要通过设备提供的统一接口函数(), ()函数对底层的使件设备进行操作。在上文中我们己经说明了,()和 )函数 主要通过回调函数把底层接口接收到的数据传送到上层应用程序。其关键在于回 调函数的安装,系统在初始化时,通过 跞数安装回调函数。通过如下宏 定义完成回调凼数和上层函数之问的挂接 函数的作用是完成的控制命令。换言之 就是跟上层函数 的接口。通过如下宏定义: 完成 和上层统的()函数的挂接。在 函数中实现了数据传 输波特率,屏蔽字节的设置和读取。虽然在初始化时已经对这些进行了设置但在应用程序 中仍然可以根据应用需要通过调用基本函数进行灵活修改。同时 也 提供了设备工作模式的设置和读取等很多功能用户可以根据应用的需要进行相应的重设 置 应用,测试及结论 驱动程序成功与否要在应用程序中验证。以 为基础,建立一个可引导的工 程。在上层的入口函数 ()函数中编写相应的代码。只要应用程序中叫以通过统 的基本函数函数所发的数据准确地从数据收发器 的发送端送 出就可以证明驱动程序中的发送部分是成功的只要应用程序准确地通过函数接收到 从其他设备发送过来的数据就可以证明驱动程序的接收部分是成功的。 上层应用程序 上层应用程序的书写主要是用来证明驱动程序的正确性,并在上层应用程序中,验证 ()函数的正确性。 首先我们通过设备提供的基本函数()打开我们创建的设备,程序 如下: 打开设备后,系统会返回一个设备描述符,下面的 程序中便可以通过设备描述符对设各进行相应的操作。然后通过个死循环不断的进行 数据的收发,并将接受到的数据显示出米。 我们还可以在接收任务中加入()函数,通过 米监视对应的环形队 列是否接收到数据有则开始读数没有则任务阻塞 山国武技文在线 测试 目标机运行应用程序来跟另一个串口转接口的网关进行通讯。主机运行串口调试 器目标杋发送岀来的数据,被另网关接收到后转换成标准的数据,在串∏调 试器上显示出来,这样可以查看 网关发送数据是否止确。目标机接收到主机发来的 数据后会把接收到的数据显示出米这样可以查看接收数据的正确性。 可以使用()函数,改变数据的传输波特率,或者改变数据的屏蔽字节, 验证()函数的正确性。 结论 通过上述方法的测试主机运行的串口调试器接收到的薮据与目标机发送的数据一致并 且没有出现数据丢失的现象证明驱动程序的发送部分运行正常从目标机所显示的接收到的 数据看接收的数据与主札发送过来的数据一致也没冇数据丢失现象证明驱动程序的接收 部分良好。并且通过函数能够对数据传输的波特率和屏蔽字节进行设置,所以本 驱动能够满足通信要求可以用到实际应用中 本文介绍了基于 的设备驱动的开发过程以 芯片为例列出了部 分驱动的核心代码以及用于测试的应用程序。因为篇幅有限不能列出详尽代码。本文严格 按照 硬什驱动程序的开发要求可以作为 下类似设备驱动的参考。 参考文献 梁作生串口协议转换器的硬件设计中国矿业人学 王继国孙新亚控制器芯片 在远程监测系统中的应用电子技术应用年期 周启平张杨 下设备驱动程序及开发指南中国电力出版社 周启平张杨 下设备驱动程序及开发指南中国电力出版社 作者简介: 谷新尧,男,年月出生,籍贯河北邢台,年毕业于中国矿业大学,现为中国矿 业大学信息与电气工程学院级硕士研究生,研究方冋是嵌入式系统开发及应用。 梁作生,中国矿业大学信息与电气工程学院,研究方向是嵌入式系统丌发及应用

...展开详情
img

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源