欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    软件著作权申报材料模板软件设计说明书.docx

    • 资源ID:16563659       资源大小:406.34KB        全文页数:21页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件著作权申报材料模板软件设计说明书.docx

    1、软件著作权申报材料模板软件设计说明书XXXX智能耳机底层驱动软件设计说明书 1、引言1.1、编写目的 本设计说明书针对XXXX智能耳机(以下简称智能耳机)的底层驱动软件而编写。目的介绍系统的各个模块,为进行后面的实现作准备。1.2、定义 MCU:MicroController Unit BLE:Bluetooth Low Energy SDK:Software Development Kit1.3、参考资料 设备接入接口协议V2.3 微信蓝牙外设协议1.0.4 微信硬件平台技术方案 微信硬件平台介绍 微信硬件平台框架说明及接入流程微信硬件平台蓝牙demo需求XXXX智能耳机MCU软件需求说明书

    2、UM-B-003_DA14580_Software_development_guideUM-B-014_DA14580_Development_KitUM-B-015_DA14580_Software_architecture2、设计概述2.1、设计任务智能耳机首先是一款耳机,然后才是通过蓝牙与微信客户端连接实现更多的扩展功能。所以MCU软件需要实现两方面的功能,向下驱动底层硬件并实现逻辑控制,向上通过蓝牙跟微信客户端通信并实现扩展功能,如图2-1。图2-1 设计任务2.2、设计约束和限制MCU:dialog DA14580蓝牙:4.0 BLE编程语言:C语言3、总体设计为了节省开发时间,使用

    3、dialog官方SDK(以下简称“SDK”)开发。SDK是一个小型操作系统,实现基本任务调度和消息传递,并实现蓝牙4.0 BLE协议栈,如图3-1。图3-1 BLE协议栈根据设计任务,本项目开发只需要编写硬件驱动和微信服务相关的代码,并且也只对这两方面进行描述。总体结构如图3-2。图3-2 总体结构4、模块描述4.1、陀螺仪模块该模块实现陀螺仪的电源管理和数据采样功能。4.1.1、电源管理电源管理功能实现陀螺仪电源打开和关闭,由输入控制。(1)输入陀螺仪使能标识:uint8_t power3DEnable绑定状态:uint8_t bindSta(2)输出打开或关闭陀螺仪。(3)代码实现if(0

    4、3=power3DEnable)|(1=bindSta) /如果app主动打开陀螺仪或在 /绑定期间if(lsm6ds0_init_flag = false) /如果陀螺仪状态在关闭状态 open /打开陀螺仪elseif(lsm6ds0_init_flag = true) /如果陀螺仪状态在打开状态close /关闭陀螺仪4.1.2、数据采样数据采样功能采样陀螺仪实时加速度和角速度。(1)输入无(2)输出加速度:float XFloatValue3角速度:float GFloatValue3(3)代码实现/加速度采样代码void LSM6DS0_X_GetAxesRaw(int16_t *p

    5、Data) uint8_t tempReg2 = 0,0; tempReg0 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_X_L_XL); tempReg1 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_X_L_XL+1);pData0 = (int16_t)tempReg1) 8)+(int16_t)tempReg0);tempReg0 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Y_L_XL); tempReg1 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Y_L_

    6、XL+1);pData1 = (int16_t)tempReg1) 8)+(int16_t)tempReg0);tempReg0 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Z_L_XL); tempReg1 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Z_L_XL+1);pData2 = (int16_t)tempReg1) 8)+(int16_t)tempReg0);void LSM6DS0_X_GetAxes_Float(float *pData) uint8_t tempReg = 0x00; int16_t pDataR

    7、aw3; float sensitivity = 0;float roll = 0; float pitch = 0; float yaw = 0; /I2C初始化 i2c_eeprom_init(LSM6DS0_I2C_SLAVE_ADDRESS,LSM6DS0_I2C_SPEED_MODE,LSM6DS0_I2C_ADDRESS_MODE, LSM6DS0_I2C_ADDRESS_SIZE); LSM6DS0_X_GetAxesRaw(pDataRaw); tempReg = i2c_eeprom_read_byte(LSM6DS0_XG_CTRL_REG6_XL); tempReg &=

    8、 LSM6DS0_XL_FS_MASK; switch(tempReg) case LSM6DS0_XL_FS_2G: sensitivity = 0.061; break; case LSM6DS0_XL_FS_4G: sensitivity = 0.122; break; case LSM6DS0_XL_FS_8G: sensitivity = 0.244; break; int32_t temp = (int32_t)(pDataRaw0 * sensitivity); float f = (float)(temp*1.00); roll = f/1000.00; temp = (int

    9、32_t)(pDataRaw1 * sensitivity); f = (float)(temp*1.00); pitch = f/1000.00; temp = (int32_t)(pDataRaw2 * sensitivity); f = (float)(temp*1.00); yaw = f/1000.00; pData0 = roll; pData1 = pitch; pData2 = yaw;/角速度采样代码void LSM6DS0_G_GetAxesRaw(int16_t *pData)uint8_t tempReg2 = 0,0; tempReg0 = i2c_eeprom_re

    10、ad_byte(LSM6DS0_XG_OUT_X_L_G); tempReg1 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_X_L_G+1); pData0 = (int16_t)tempReg1) 8)+(int16_t)tempReg0); tempReg0 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Y_L_G); tempReg1 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Y_L_G+1); pData1 = (int16_t)tempReg1) 8)+(int16_t)tempReg0)

    11、; tempReg0 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Z_L_G); tempReg1 = i2c_eeprom_read_byte(LSM6DS0_XG_OUT_Z_L_G+1); pData2 = (int16_t)tempReg1) =3minutes) close else if (true = ANCEnable) open else if (1 = buttonValue) /使用按键关闭降噪功能 close else /使用按键打开降噪功能 open 4.3、电量检测模块电量检测模块定时检测电池剩余电量。(1)输入无(2)输出剩余电量,

    12、百分比表示。(3)实现代码uint8_t getBattery(void) curbattery = battery_get_lvl(BATT_CR2032); return curbattery;4.4、指示灯模块指示灯模块由一个红色和一个绿色指示灯组成,红色指示灯指示电池是否电量低,绿色指示灯作上电指示、绑定指示、蓝牙连接指示和降噪功能开关状态指示。指示灯状态由输入条件控制。4.4.1、红色指示灯(1)输入电池剩余电量:uint8_t curbattery(2)输出指示灯状态(3)实现代码if(0=curbattery)指示灯闪烁else指示灯灭4.4.2、绿色指示灯(1)输入系统刚上电标

    13、识:static uint8_t GREEN_LED_Flag绑定状态:uint8_t bindSta蓝牙连接上指示灯延时:uint8_t BLELEDDelay降噪开关状态:bool powerRNFlag(2)输出指示灯状态(3)实现代码if (1=GREEN_LED_Flag)/如果刚上电闪烁2selse if(1=bindSta)/在请求绑定状态急闪else if(BLELEDDelay)/在蓝牙刚连接上常亮elseif(true=powerRNFlag)/如果打开降噪呼吸灯效果else/否则常灭4.5、微信服务模块4.5.1、模块概述微信服务模块底层依托蓝牙BLE协议栈,顶层通过微信

    14、Protobuf协议对厂商自定义应用协议进行封装,这样外设(本项目中表现为智能耳机)和厂商服务器之间就可以通过微信平台以透传的方式实现通信,数据流图如图4-1。图4-1 数据流图微信服务模块时序如图4-2。通信使用请求应答模式,厂商服务器使用SendDataPushReq命令请求,智能耳机使用SendDataReq命令应答,应用层协议附带在Protobuf协议可变长度包体内,Protobuf协议数据包结构如图4-3。 | | | | | SendDataPushReq(seq=0) | | | | | | | | SendDataPushReq(seq=0) | | | | | | | | |

    15、 SendDataReq(seq=n) | | | | | | | | | | SendDataReq(seq=n) | | | | | | | | | SendDataResp(seq=n) | | | | | | | | SendDataResp(seq=n) | | | | | | | |图4-2 时序图图4-3 Protobuf协议数据包结构微信服务模块应用层协议数据格式如表4-1。表4-1 应用层协议数据格式字段名称CmdIdParamCRC16校验码字段长度(byte)1 byten bytes2 bytes字段说明命令参数,长度根据命令而定CmdId和Param的校验,高字节在前低字节在后应用层协议命令列表如表4-2,目前只用到部分命令,剩余没用到的用于后续扩展所需。表4-2 应用层协议命令列表数据方向命令ID分布手机 外设21-70外设 手机71-120根据不同CmdId可划分为多个小模块,如图4-4。图4-4 微信服务模块图4.5.2、软件流程微信服务软件流程图如图4-5。是图4-5 微信服务软件流程图是是是否否否


    注意事项

    本文(软件著作权申报材料模板软件设计说明书.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开