历史上的今天
返回首页

历史上的今天

今天是:2026年01月31日(星期六)

2023年01月31日 | 基于S3C2440A处理器和无线收发模块实现无线多媒体播放系统的设计

2023-01-31 来源:elecfans

基于嵌入式Linux技术,提出一种智能无线多媒体数字播放系统的设计方案。介绍了系统功能、总体结构、主控CPU和无线模块。通过Linux系统中SPI接口的驱动对无线模块的控制,成功实现了区域位置自动识别 和音视频文件的受控播放以及与用户进行交互的图形化界面操作程序。


1、 系统组成

一种能够自动接收并识别无线地址码的嵌入式智能无线多媒体播放系统结构如图1所示,该系统由手持智能无线多媒体终端和地址码无线发射机构成。

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

地址码无线发射机安装在各个景点或展台处,周期性地向外发射自身地址码,不同的景点/展台具有不同的地址码,同一景点/展台可以设置一个或多个相同地址码的发射机,尽量让所发射的信号覆盖整个景点/展台,同时通过发射功率控制技术避免相邻景点/展台之间产生交叉干扰。随着用户的移动,所携带的手持智能无线多媒体终端在走近某景点/展台时会自动接收到对应该景点/展台的地址码,通过对该地址码的解析,接收终端调用并切换到该地址码对应的、预存在SD存储卡中的音视频文件进行播放,用户可通过LCD液晶触摸显示屏观看播放内容,也可以终止自动播放,手动选择其他的音视频文件进行播放。


2、 系统设计

2.1 系统设计指标

设计指标为:各景点/展台的覆盖范围5 m~25 m可调;各景点/展台之间互不干扰;景点识别编码发射采用ISM频段;信号发射功率在允许范围之内可调;能在温度湿度相对恶劣的环境下工作;使用智能化操作系统,可随时更新应用程序;自动实现不同景点/展台的音视频内容切换;拥有图形用户界面,用户可通过触摸屏手动选择音视频文件和语种;可存放音视频文件,大小及数量根据SD存储卡容量决定,可现场下载更新;支持音频MP3和MPEG1-4视频文件播放;发射主机符合国家相关标准。


为了满足设计技术指标要求,对构成系统的主要器件选择如下:(1)地址码无线发射机的主控芯片选用TI公司的MSP430F133;(2)手持智能无线多媒体终端的主控芯片选用三星公司的S3C2440A,该芯片典型主频为400 MHz,集成了NAND Flash控制器、SD/MMC控制器、LCD控制器、SPI接口控制器等;(3)无线收发模块选用CYWUSB6934;(4)Flash存储器采用三星公司的K9F1208UOB;(5)SDRAM采用Hynix公司的HY57561620T;(6)显示屏采用NEC 3.5′ TFT触摸屏;(7)音频解码芯片采用UDA1341TS。


嵌入式操作系统构成如下:(1)Bootloader使用三星公司专为其产品开发的启动代码VIVI;(2)内核采用Linux2.6.13版[3];(3)文件系统选择与NAND Flash兼容较好的YAFFS文件系统[4-6];(4)图形用户界面采用QTOPIA1.7[7]。

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

2.2 ARM9嵌入式微处理器S3C2440A

当前,嵌入式技术的应用越来越广泛,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心——处理器决定了产品的市场和性能。在32位嵌入式处理器市场中,ARM处理器占有很大的份额。现在由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。Linux自出现以来,得到了迅猛的发展。Linux是开放源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。Linux在服务器领域已经占有很大的份额,在图形界面方面也不输于Windows。由于源码可以修改、移植,Linux在嵌入式领域中的应用也越来越广。


S3C2440A是三星公司基于ARM920T设计的一款处理器,主频400 MHz;扩展总线最大频率100 MHz;32 bit数据,27 bit外部数据线;完全静态设计(0~400 MHz);存储控制器(8个存储体),4个带有PWM的16 bit定时器;多达55个中断源的中断控制器;RTC;3个UART,支持IrDA 1.0;4个DMA通道支持外设DMA;8通道,500 kS/s,10 bit ADC;支持STN与TFT LCD控制器;看门狗;I2S音频接口;2个USB接口;I2C-Bus接口;2个串行外围接口电路(SPI);SD卡接口。选择ARM9芯片可以利用Linux操作系统来减少软件开发时间,而且S3C2440A对主流多媒体支持较好,很适合用于开发智能多媒体系统。

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

2.3 CYWUSB6934无线收发模块

无线收发模块选用Cypress公司的CYWUSB6934。该芯片既可用作发射,也可用作接收,工作在2.4 GHz ISM 频段,频率范围为2.4 GHz~2.483 GHz。具有低功耗、低辐射的特点(辐射功率最大为0 dBm),且发射功率可调(共7个等级);无线接收灵敏度高,可达-90 dBm;通信半径可达10 m(当输出最大功率且无障碍物阻挡时的直线通信距离可达15 m左右)。由于其近距离、低功耗等特点,非常适用于短距离无线传输。


2.4 地址码无线发射机

地址码无线发射机是以单片机为核心构成的控制系统,主要包括电源模块、无线发射模块和发射功率调整拨动开关,单片机与无线发射模块的接口为SPI口。


2.5 手持智能无线多媒体终端

每个景点/展台的音视频内容都以特定格式存储在SD存储卡中,每一个文件以规定方式命名,且对应于一个地址码。


手持智能无线多媒体终端开机完成硬件初始化、Linux操作系统的启动、文件系统的挂载和图形用户界面的启动后,由用户点击图形桌面上的智能点播系统程序图标运行点播程序。系统查询到这个信息后,立即读取CYWUSB6934的数据寄存器以获得地址码。系统会将接收到的地址码与前一数据进行对比,若相同则继续播放,若不同则自动切换到对应该地址码的文件进行播放。


3、 智能无线点播的实现

微处理器S3C2440A和无线芯片CYWUSB6934之间通过SPI接口进行通信,在Linux系统中两者之间的通信就必须通过SPI驱动程序来实现。而智能点播则是在用户启动Linux系统中的点播程序时,系统识别接收到的数据后,自动调用音视频文件进行播放。


3.1 SPI驱动

在Linux操作系统中,所有外围设备的控制都是通过驱动程序实现的,设备驱动程序是操作系统内核与机器硬件之间的接口。


SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。手持智能无线多媒体终端需要通过SPI接口控制无线收发芯片,这就需使用SPI接口驱动程序来建立无线收发芯片与内核之间的通信桥梁。SPI接口以主从方式进行工作,其接口包括4种信号:(1)MOSI:主器件数据输出,从器件数据输入;(2)MISO:主器件数据输入,从器件数据输出;(3)SCLK:时钟信号,由主器件产生;(4)/SS:从器件使能信号,由主器件控制。


图2为S3C2440A与CYWUSB6934之间SPI接口的连接图。图中nSS控制CYWUSB6934作为从器件,SPIMOSI和SPIMISO是它们之间的数据传输通道,SPICLK为时钟信号。当SPI作为主控制器时,由SPPRE寄存器中相应的比特位控制。而当SPI为从设备时,时钟信号则是由其他设备提供。某些情况下,在将数据写入SPTDAT寄存器之前,nSS应该被置为高电平。在本系统中主要用到的S3C2440A内部与SPI相关的寄存器如下:

(1)SPCON寄存器:主要用于设置时钟开启、SPI传输格式、SPI传输模式。其中传输模式有3种,分别是polling模式、DMA模式、中断模式。

(2)SPSTA寄存器:SPI接口的状态寄存器,用于指示数据接收或发送是否已经完成。

(3)SPPIN寄存器:用于检测是否有多个主机。

(4)SPPRE寄存器:用于设置SPI传输时钟频率。其值通过如下计算式确定:

Baud rate=PCLK/2/(Prescaler value+1)

其中Prescaler value的初始值为0x00。

(5)SPTDAT和SPRDAT寄存器:发射和接收数据寄存器。

在Linux系统启动时,要对以上寄存器进行赋值,就必须通过SPI驱动程序。而驱动程序就是作为系统和外部设备的一个桥梁,在这里只有将SPI通道正确打开,系统才能够通过这个桥梁对外部无线芯片的基本工作寄存器进行操作,完成数据的收发。


图3中驱动程序的struct file_operaTIons( )只使用了系统提供的4个子函数接口:open( )、write( )、ioctl( )和release( )。其中open( )用于完成SPI设备的打开、初始化相关寄存器、准备进行设备I/O操作;write( )完成通过SPI接口进行写操作;ioctl( )是进行读写以外的其他操作,通过对I/O口高低电平的改变实现不同功能;release( )用于关闭设备,释放占用内存[12]。


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通信,其具体的编程实现如下:


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

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

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

static ssize_t spi_write(struct file*filp,const char*buf,size_t

count,loff_t*f_ops)

{

unsigned int tmp=0;

get_user(tmp,(char*)buf);/*获取CYWUSB6934中寄存器地址*/

while((readl(SPSTA1) & 0x1)==0);

writel(tmp,SPTDAT1);/*向寄存器中写预置数据*/

while((readl(SPSTA1) & 0x1)==0);

tmp=readl(SPRDAT1);/*再次从读出的数据才是有用数据*/

put_user(tmp,(char*)buf);

return 0;

}

(3)驱动中的ioctl( )函数通过改变I/O输出电平的高低控制CYWUSB6934的PD(Power Down)口。该端口电平为低时可以使无线芯片工作在休眠状态,以达到省电的目的。其代码如下:


3.2 智能点播界面

当手持智能无线多媒体终端接收到由地址码无线发射机发出的地址码时,将其存储在数据寄存器中,主控芯片通过SPI接口读取该地址码信息,并以此为指针搜索对应的、预存在SD存储卡中的音视频文件,并按需调用终端中的音视频播放器解码播放。


软件界面有2个按钮,左边是自动播放按钮,右边是手动播放按钮。在用户启动点播软件时,终端处于自动播放状态,而自动播放按钮是当用户进行手动播放后,如需要再让其进行自动播放时使用此按钮。当用户点下手动播放按钮时,会立即终止自动播放,弹出文件选择菜单,手动选择需要播放的文件。


智能点播软件需要解决的是底层数据和上层应用程序的连接问题。而对地址码的判断是对底层进行操作,需调用C程序,则用户界面程序使用一个自定义的data外部变量,作为上层界面程序与底层应用程序的桥梁。为了使程序能准确地调用播放器,这里还设立了一个消息机制,定时查询CYWUSB6934的数据寄存器。一旦收到数据,就改变消息参数,上层界面程序查询到这个参数改变后,便立即调用播放器。


本文设计的基于嵌入式的无线智能多媒体数字播放系统将嵌入式应用技术与短距离无线通信技术相结合,构成一套既具有工程实用价值,又可按需扩展功能的系统,实现了智能化的区域识别与音视频播放,适用于各种景点及展台的音视频自动/手动受控播放,有很好的市场前景,能给厂商带来很大的利润。

推荐阅读

史海拾趣

C-MAC Automotive公司的发展小趣事

随着公司实力的不断增强,C-MAC Automotive公司开始实施全球化战略。公司先后在欧美和亚洲等地设立研发中心和生产基地,以便更好地满足当地市场需求。通过全球化布局,C-MAC不仅拓宽了市场渠道,还降低了生产成本,提升了整体竞争力。此外,公司还积极参与国际技术交流和合作,不断提升自身的技术水平和创新能力。

BEI Sensors公司的发展小趣事

随着公司业务的不断发展,Beckhoff开始积极拓展全球市场。经过数十年的努力,公司的分支机构已经遍布世界各地,业务覆盖全球60多个国家。通过与全球合作伙伴的紧密合作,Beckhoff成功地将其自动化产品和解决方案推向全球市场,为全球客户提供优质的服务。

Codeco Corporation Of Vermont公司的发展小趣事

在国内市场取得成功后,Codeco开始将目光投向国际市场。他们积极拓展海外业务,与多家国际知名企业建立合作关系。通过参加国际展会、设立海外分支机构等方式,Codeco的产品逐渐打入国际市场,赢得了广泛的认可。这一过程中,Codeco不仅提升了品牌知名度,也积累了丰富的国际化运营经验。

岑科(CENKER)公司的发展小趣事

在过去,国内企业在车载信号传输领域的共模电感选择有限,主要依赖进口品牌。岑科意识到这一市场的巨大空缺后,决定借助自主研发设备的优势进行研发工作。经过两三年的攻关,岑科成功研发出了ACML系列共模电感。这一系列产品在温度特性上表现优异,可在-40℃到150℃的范围内正常工作,并适用于CAN-BUS、CAN-FD、A2B及以太网等多种场景。岑科的这一研发成果不仅填补了国内市场空白,还实现了国产替代,为汽车电子行业的发展做出了重要贡献。

Bliley Technologies Inc公司的发展小趣事

随着战争的结束,军事通信市场的需求逐渐减少,Bliley开始寻求新的发展机遇。公司开始将目光投向更广泛的商业应用领域,并逐步拓展其产品线。在20世纪80年代初,Bliley开始生产SC切割晶体,这一创新使其在晶体制造领域取得了新的突破。进入21世纪,Bliley继续加大研发力度,不断推出新的产品和服务。2001年,公司更名为Bliley Technologies Inc.,以更好地反映其日益多样化的产品和服务范围。如今,Bliley已经发展成为一家提供多种频率控制产品的全球领导者。

明微公司的发展小趣事

随着全球半导体行业向中国市场的转移,明微公司意识到拓展海外市场的重要性。为了加快海外市场拓展步伐,公司积极加强与国际知名企业的合作与交流,引进先进的技术和管理经验。同时,公司还积极参加国际展会和论坛等活动,提升品牌影响力。这些举措使明微公司在国际市场上逐渐树立起良好的口碑和形象。

问答坊 | AI 解惑

I题-模拟路灯控制系统,用哪个传感器测定点位置

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 免费下载I题,请大家提点建议给点思路,用哪个传感器测定点位置  …

查看全部问答>

【晒电路】马达调速电路

1.长假,预祝大家双节快乐 2.大家【晒电路】,才是真的【晒电路】,晒 完我就回家了 3.正题 在许多应用场合,需要随时通过调整马达的转速实现调整风量、流量等目的。过去通常采用通过调整串入马达的电感量来实现对马达转速的控制,这种方法存在 ...…

查看全部问答>

招聘WINDOW CE 应用软件工程 2名

1.精通C++或C语言,能熟练使用EVC或VS2005等工具开发应用软件. 2.有多媒体,GPRS网络应用开发经验者优先. 3.有游戏软件编程经验着优先. 4.熟悉windows ce 系统优先. 5.有较强的团队合作精神,富有责任心. 6.待遇面议. 请把您的简历和作品发送到s ...…

查看全部问答>

ARM7芯片哪个口接按键?

我想用D1口接按键,可以吗? 用什么指令可以让D1口设置为高电平?(MOV D1 #0FFH行吗?)…

查看全部问答>

听说CORTEX-M3的核,出来V2版本了?NXP现在打广告说这个。

                                 ST接下来是不是也出V2的STM32芯片呢?…

查看全部问答>

请教IAR下Release的脚本文件设置

                                 我的工程程序改自IAR自带的,它里面只有Debug的脚本,我填加了个Release,用debug in flash的脚本,结果发现生成的 ...…

查看全部问答>

关于计数的C表达式怎么理解?

 代码如下: Buffer_Counts[2]=Count_A/100;   Buffer_Counts[1]=Count_A%100/10;   Buffer_Counts[0]=Count_A%10;   if(Buffer_Counts[2]==0)       //从这起,程序是想 ...…

查看全部问答>

大家能聊聊怎样学习u-boot

大家能聊聊怎样学习u-boot,我感觉很困惑…

查看全部问答>

富士通工业测控DIY活动总结

怀着对ARM的好奇和学习的冲动参加了这个活动。只会一点点51的我显然是低估了ARM的复杂程度。 因为没有接触过ARM,加上自己擅长的是结构设计。以为只有设计个外壳和内部结构还有面板就可以了。没想到项目只是做个板子就结束了。并不是以搞个成型的 ...…

查看全部问答>

威视锐ZYNQ开发板-ZingSK镜像固化与启动

一、 概述 本实例主要介绍ZingSK平台的固化和启动方法。也就是ZYNQ的调试与配置。ZYNQ支持JTAG调试模式和三种镜像启动模式。这三种启动模式分别是QSPI_FLASH、NAND_FLASH和TF卡启动模式。ZYNQ使用独立的JTAG接口,下载电缆采用redcable for xili ...…

查看全部问答>