stm32通过 一线串口通信控制JQ8900-16P语音模块

news/2024/11/16 20:32:28/

今天玩玩语音模块,用到了所谓的一线串口通信(就是用一个IO口发脉冲)不说了,上代码

JQ8900-16P语音模块资料自取:链接:https://pan.baidu.com/s/1O3P1Ro4Rc4cVMACuJVdqaA   提取码:1u4p 

 

接线:

      模块——————————单片机

ONE LINE—————————PB11

DC-5V———————————5V

GND———————————GND

 

OneUart.c文件#include "OneUart.h"
#include "delay.h"
#include "stm32f10x.h"///
//函	  OnUart_GPIO(void)
//功	  能:语音模块一线串口IO口
//输入参数: void
//输出参数: void
//说	  明:
//
void OnUart_GPIO(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC->APB2ENR|=1<<3;   //GPIOB//GPIOB.11GPIOB->CRH&=0xFFFF0FFF;     //清零 GPIOB->CRH|=0x00003000;     //推挽输出	50MHZGPIOB->ODR=~(1<<11);        //B.11低	}
///
//函	  数:SendData(u8 addr)
//功	  能:语音模块一线串口
//输入参数: addr要发送的0x数
//输出参数: void
//说	  明:
//
void SendData ( u8 addr )//发送函数。
{u8 i;/*发送时关掉中断,防止中断影响时序  */SDA = 1; /*开始拉高*/delay_us ( 1000 );SDA = 0; /*开始引导码*/delay_us ( 3200 );/*此处延时最少要大于2ms*/for ( i = 0; i < 8; i++ ) /*总共8位数据  */{SDA = 1;if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示  */{delay_us ( 600 );SDA = 0;delay_us ( 200 );}else              /*1:3表示数据位0 ,每个位用两个脉冲表示  */{delay_us ( 200 );SDA = 0;delay_us ( 600 );}addr >>= 1;}SDA = 1;//恢复中断
}

 

.h文件#ifndef __ONEUART_H
#define __ONEUART_H#include "sys.h"#define SDA PBout(11)void SendData ( u8 addr );    //发送函数。
void OnUart_GPIO(void);       //GPIO#endif

 

main文件#include "stm32f10x.h"
#include "delay.h"
#include "OneUart.h"int main(void)
{OnUart_GPIO();delay_init();while(1){//发送0x013SendData(0x0a);    //清空数字SendData(0x01);    //曲目号SendData(0x03);SendData(0x0b);    //选曲播放delay_ms(2000);    //延时//发送0x01SendData(0x0a);SendData(0x01);SendData(0x0b);delay_ms(2000);//发送0x07SendData(0x0a);SendData(0x07);SendData(0x0b);delay_ms(2000);//发送0x03SendData(0x0a);SendData(0x03);SendData(0x0b);delay_ms(2000);}}

 在网上找了很多的延时函数,终于找到了一个达到要求的

delay_us延时函数///
//函	  数:delay_us(u6)
//功	  能:us延时函数
//输入参数:u16 nTimer(延时时间)
//输出参数:void
//说    明:__NOP()【用__NOP()函数延时 72次】
//
void delay_us(u32 nTimer)
{u32 i=0;for(i=0;i<nTimer;i++){__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();}
}

 


http://www.ppmy.cn/news/249125.html

相关文章

cs8900的基地址

用原版vivi一直很不爽,于是便有个想法,想整个功能比较完备的出来. 于是开始搜索资料,baidugoogle一番竟然发现早已有高手做出来了.自己正苦于拿不定主意到底用不用中断,正好拿高手的成果参考下,站在巨人的肩膀上,让我们走得更远. 于是便看代码...看代码... 在看tftp实现的时候,…

linux网卡驱动之CS8900A网卡驱动程序

文章目录 CS8900A芯片介绍以太网帧CS8900A寄存器代码分析 CS8900A芯片介绍 CS8900芯片是Cirrus Logic公司生产的一种局域网处理芯片&#xff0c;在嵌入式领域中使用非常常见。它的封装是100-pin TQFP&#xff0c;内部集成了在片RAM、10BASE-T收发滤波器&#xff0c;并且提供8位…

STM32一键连接JQ8400-FLJQ8900语音模块程序分析

最近优化了一个项目 需要使用 语音模块 于是采用了JQ8400 语音模块 具体的数据手册 淘宝卖家提供 主要的是一线数据发送的协议格式 由于前期使用了RT-Thread 给自己挖了一个坑 为什么呢 我所移植的3.1.3版本的源码 没有提供 us级的延时函数 只有…

单片机语音模块JQ8900-16P的几种触发方式与源码配置

我先来讲一下这个模块方便在什么地方&#xff1a; &#xff08;我没有做广告哈&#xff0c;有一说一&#xff09; 1&#xff0c;有SPI-flash&#xff0c;USB的接口直接连电脑显示U盘&#xff0c;替换音频很方便 2&#xff0c;默认情况下有IO口按键触发&#xff0c;很方便播放…

JQ8900-16P语音模组硬件使用

资料阅读 1.模组特征 1. 支持 MP3 WAV 硬件解码1. 支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/481. 多种控制模式:两线串口模式、一线串口控制、按键模式1. 支持上一曲&#xff0c;下一曲&#xff0c;播放、暂停、停止、选曲、等常用功能控制1. 支持播放曲目序号获取&…

JQ8900-16P语音模块(驱动及测试)

今天&#xff0c;给大家带来的是JQ8900语音模块&#xff0c;这是硬件图&#xff1a; VPP: 单线串口&#xff08;就是接收脉冲信号的引进&#xff09; BUSY: 播放指示灯 RX: 接收段 TX: 发送段 DC-5V: 5v供电 SPK-: 扬声器负极 SPK: 扬声器正极 IO1~IO7是触发输入口&…

EPSON RX8900SA/CE 时钟芯片开发笔记

文章资料来源&#xff1a;《Epson&#xff08;爱普生&#xff09; RX8900SA_RX8900CE实时时钟模块 应用手册》 一、模块简介 I2C总线接口实时时钟模块 RX8900 SA / CE 内置32.768 kHz DTCXO&#xff0c;稳定性高&#xff08;Digital Temperature Compensated Xtal(crystal) O…

【RT-Thread】高精度RTC rx8900 驱动软件包

文章目录 1 介绍1.1 支持功能1.2 目录结构1.3 许可证1.4 依赖 2 实现功能2.1 rx8900驱动描述2.2 rx8900读寄存器接口2.3 rx8900写寄存器接口2.4 RT-Thread设备虚拟文件接口2.5 片内温度获取接口2.6 rtc设备注册rx8900设备注册rx8900私有信息初始化 3 获取 rx8900 软件包4 使用 …