在线时间0 小时
UID2084769
ST金币0
蝴蝶豆0
注册时间2014-4-9
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
玩stm32挺久了,但是还没一块属于自己的开发板,本来想买来着,刚好同学说与非网有这个优惠活动,那咱也来看看运气几何。
说说我跟老师做的一个项目吧!----------stm32高压电房语音报警系统,其实这还只是这个项目的一小部分,这个东西据说是要拿去申请专利的,出于保密,我不会贴出我全部的程序,但是我会详细讲解这一小部分的操作流程,相信用到stm32的小伙伴们一看就清楚。请看。
首先说说使用的芯片和器件:①所采用的语音芯片是华邦公司的isd1760,这个芯片是通过SPI协议与mcu通信的,stm32本身就有spi接口,大家都知道spi是一种高速的、全双工的、同步的通信总线。②mcu:stm32。③感测器件:被动式人体红外探测器
接下来就讲讲软件编程:①配置stm32的spi主模式(1)配置相关引脚的复用功能,使能spi1时钟2)设置spi1工作模式(3)使能spi1。这部分的功能说白了就是spi的初始化和通信的一个函数,就不用像在单片机上模拟spi时序了,stm32自带 的这个接口很方便使用,对于初学者来说可以说比使用单片机模拟spi来得简单。(这部分程序在附件上)
②编写isd1760通信程序这部分程序我就不贴出来,其实也很简单。首先大家先到网上下一个中青世纪的一个demo程序,上面有 isd1760的所有操作函数,将其中的ISD_SEND DATA(UNSIGNED CHAR DAT)去掉,这个函数就是单片 机模拟spi通信时序的,然后将其他函数里的ISD_SEND DATA(UNSIGNED CHAR DAT)全换成 SPIx_ReadWriteByte(u8 TxData)就ok了,那么isd1760的通信程序就搞定。
③编写感测器件的扫描函数说实话,这部分就最简单不过了。被动式人体红外探测器的原理就是当感测到有人时信号端就输出高电 平,然后硬件上信号输出端加个三极管配置成反相器,所以所谓扫描函数其实做的就是类似于按键扫描 的工作。
④main函数的编写 首先就是系统时钟设置,以及一些初始化函数,这些根据个人需要添加,这里大家编程时可以参考 stm32不完全手册上的一些例程。接下来就是while(1)里面就是mcu要干的事了,首先扫描人体探测器信号,如果信号有效,则驱动isd1760播放相关的语音内容,如果无效就不断扫描。
此外,如果想要玩得复杂点的------打断播放,一段没播放完就马上播其它段的内容,这有点实时性的味道,这个还是有意义的。程序上要先isd复位然后再上电最后再播放下一段,这当初也折磨我几个小时 了,这里顺便提出来,希望对有需要的人有用。
以上这么点就是这一部分的全部内容了,个人觉得挺简单的,如果有不懂的地方可以发QQ问我(QQ:1617971712) |
-
-
75.67 KB, 下载次数: 18, 下载积分: ST金币 -1
|