③数据的发送。SPORT1_STAT中的TXF位指示发送FIFO中是否有空位,其值为1表示FIFO已满,为0表示FIFO中仍有空位。
(3)ioctl() 函数
ioctl()是设备驱动程序中对设备I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口传输波特率的选择。驱动程序中ioctl()通过传入的参数cmd设置SPORTl口的发送时钟频率。cmd在用户程序端由一些宏进行定义,该整数通过系统调用传递到内核中的驱动程序,再由驱动程序利用解码宏从这个整数中得到用户要设置的波特率,然后通过switch{case)结构进行相应的操作。
主要实现流程如下:
只要保证应用程序中由locil()的参数cmd的宏定义值与核心驱动中相应的解码宏定义相符,便可在应用程序中通过ioctl()函数实现任意有效波特率的设置。
结语
在SPORT口驱动程序中,通过对数据帧结构进行转换,输出与UART异步数据相同的帧格式,用软件实现UART,有效地解决了DSP的异步串口扩展问题。