S3C2440A SPI的传输形式是由SPI控制寄存器SPCON中的1 bit位和2 bit位的值共同决定的。1 bit位是CPHA(Clock Phrase Select),它用来选择传输格式为Format A或Format B,置0为Format A,置1为Format B;2 bit位是CPOL(Clock Polarity),它决定时钟信号是高电平触发还是低电平触发,置0为active high,置1为active low。由图3可以看出,CYWUSB6934的SPI单字节读出时钟是高电平触发的,又如虚线箭头处时钟信号的上升沿正与图4中SPI时钟相吻合,而在图4中cmd的2 bit位是传输字节中的最高2位,再根据图5中 MOSI的MSB就应该是传输字节的最高2位,为00,所以选择方式为Format A高电平触发。

基于S3C2440A处理器和无线收发模块实现无线多媒体播放系统的设计

在确定了它们之间的传输格式以及触发方式后, SPI驱动的实现就是对这些寄存器进行正确的赋值。无线收发芯片CYWUSB6934通过SPI接口与ARM9主控芯片进行通信,需要对各个寄存器进行设置。根据系统要求,使用SPI1口实现SPI通信,其具体的编程实现如下:

基于S3C2440A处理器和无线收发模块实现无线多媒体播放系统的设计

(1)在open( )函数中,对SPI接口进行初始化,设置端口使用状态,设置SPI传输时钟和传输模式。其代码如下:

在对S3C2440A中的SPI相关寄存器进行初始化时,需要注意SPI的时钟是与主时钟相关联的,如果不首先开启主时钟,即使将SPI自身工作时钟开启也不能使接口正常工作。

(2)通过写函数write( )实现对无线收发芯片CYWUSB6934的数据及地址寄存器的操作。其代码如下:

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查