由STM32F103C8T6和ISD1820,LCD1602,按键模块组成的录音设备,设备的软件模块的声音采集存储模块的代码怎么写,声音存储在ISD1820的内置存储器中
时间: 2024-02-18 16:05:38 浏览: 79
STM32F103C8T6的LCD1602代码
首先需要了解ISD1820的工作原理,它是一款语音录放芯片,内置存储器可以存储8秒的语音。通过STM32F103C8T6的GPIO口控制ISD1820的录音、播放和删除等操作。
下面是录音存储模块的代码实现:
1. 定义GPIO口:
```c
#define REC PBout(0) // 录音开始控制
#define PLAY PBout(1) // 播放录音控制
#define DEL PBout(2) // 删除录音控制
#define BUSY PAin(0) // ISD1820忙碌状态
```
2. 初始化GPIO口:
```c
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
// PA0 -> BUSY
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// PB0 -> REC
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// PB1 -> PLAY
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// PB2 -> DEL
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
```
3. 录音函数:
```c
void Record(void)
{
REC = 0;
delay_us(100);
REC = 1;
while(BUSY); // 等待录音结束
}
```
4. 播放录音函数:
```c
void Play(void)
{
PLAY = 0;
delay_us(100);
PLAY = 1;
while(BUSY); // 等待播放结束
}
```
5. 删除录音函数:
```c
void Delete(void)
{
DEL = 0;
delay_us(100);
DEL = 1;
delay_ms(10); // 等待删除
}
```
需要注意的是,在录音时需要等待BUSY状态为0,表示已经录音结束。在播放时也需要等待BUSY状态为0,表示已经播放结束。在删除时需要等待一定时间,等待删除完成。
以上是基本的录音存储模块的代码实现,可以根据实际需要进行修改和完善。
阅读全文