OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2467|回复: 3

STM32F072 关于I2S从发送问题

[复制链接]

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-9-18
在线时间
7 小时
发表于 2016-12-20 14:39:16 | 显示全部楼层 |阅读模式
1金钱
我现在配置i2s为从模式发送,时钟外部提供,但是发送数据示波器一直看不到数据,不知道是配置问题还是其他原因,配置为主模式发送没问题,从模式一直不行
配置代码:

void I2Sx_Mode_Config(void)
{
   GPIO_InitTypeDef  GPIO_InitStructure;
   I2S_InitTypeDef I2S_InitStructure;
/* 打开 I2S2 APB1 时钟 */
   BSP_PeriphEn(BSP_PERIPH_ID_SPI2EN);
   BSP_PeriphEn(BSP_PERIPH_ID_IOPBEN);
  
//  GPIO_PinAFConfig(I2S_PORT, GPIO_PinSource12,GPIO_AF_0);
  //GPIO_PinAFConfig(I2S_PORT, GPIO_PinSource13,GPIO_AF_0);
  GPIO_PinAFConfig(I2S_PORT, GPIO_PinSource14,GPIO_AF_0);
  
//浮空输入
  GPIO_InitStructure.GPIO_Pin = I2S_CK_PIN|I2S_WS_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(I2S_PORT, &GPIO_InitStructure);
  
  
    //发送器,推免复用输出
  GPIO_InitStructure.GPIO_Pin = I2S_SD_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(I2S_PORT, &GPIO_InitStructure);
  
  SPI_I2S_DeInit(SPI2);
/* I2S2 外设配置 */
I2S_InitStructure.I2S_Mode = I2S_Mode_SlaveTx;  //从模式发送
I2S_InitStructure.I2S_Standard = I2S_Standard_LSB ; //接口标准
I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_32b; //数据格式,16bit
I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Disable; //主时钟模式
I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_48k; //音频采样频率
I2S_InitStructure.I2S_CPOL = I2S_CPOL_High;
I2S_Init(SPI2, &I2S_InitStructure);

//SPI_I2S_ITConfig(SPI2,SPI_I2S_IT_TXE, ENABLE);
I2S_Cmd(SPI2, ENABLE); //使能 SPI2/I2S2 外设
  SPI_I2S_SendData16(SPI2, 0XAABB);//SPI发送字节

}
//DMA配置
void DMA_Configuration_I2S(u16 bufsize)
{
//SPI2_RX--Channel4  SPI2_TX--Channel5
    DMA_InitTypeDef  DMA_InitStructure;
   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);

    DMA_DeInit(DMA1_Channel5);
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)I2S_DR_Addr;
    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)I2S_Buffer_Tx;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;//DMA传输方向为读内存写外设
    DMA_InitStructure.DMA_BufferSize = bufsize;   
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
    DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //优先权为中等
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    DMA_Init(DMA1_Channel5, &DMA_InitStructure);
   

    // DMA_ITConfig(DMA1_Channel4,DMA_CCR_HTIE, ENABLE);  //使能后为中断方式
    // DMA_ITConfig(DMA1_Channel5,DMA_CCR_TCIE, ENABLE);  //传输完成中断,
   
    SPI_I2S_DMACmd(SPI2,SPI_I2S_DMAReq_Tx,ENABLE);
   

    BSP_IntVectSet(BSP_INT_ID_DMA_CH4_5_6_7,DMA1_Channel5_IRQn);
    BSP_IntEn(BSP_INT_ID_DMA_CH4_5_6_7);
DMA_ITConfig(DMA1_Channel5,DMA_IT_TC, ENABLE); //使能传输完成中断

DMA_Cmd(DMA1_Channel5,ENABLE); //启动传输

}

不使用dma的时候发送函数使用循环检测SPI_I2S_FLAG_TXE
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);//判断是否发送完成  
    SPI_I2S_SendData16(SPI2, 0XAABB);

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-9-18
在线时间
7 小时
 楼主| 发表于 2016-12-20 14:40:03 | 显示全部楼层
在线等,求大神帮帮忙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-12-26 00:14:33 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2021-9-18
在线时间
7 小时
 楼主| 发表于 2016-12-26 10:08:04 | 显示全部楼层
感谢原子哥帮忙顶,初始化后while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);一直过不去,应该还是配置有点问题。求大神帮帮忙
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 04:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表