探索者开发板的音乐播放器的实验

2019-07-20 06:30发布

本帖最后由 luojue10330 于 2017-4-19 15:03 编辑

第一个问题:
GPIO_PinAFConfig(GPIOB,GPIO_PinSource12,GPIO_AF_SPI2); //PB12,AF5  I2S_LRCK
GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_SPI2); //PB13,AF5  I2S_SCLK
GPIO_PinAFConfig(GPIOC,GPIO_PinSource3,GPIO_AF_SPI2); //PC3 ,AF5  I2S_DACDATA
GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_SPI2); //PC6 ,AF5  I2S_MCK
GPIO_PinAFConfig(GPIOC,GPIO_PinSource2,GPIO_AF6_SPI2); //PC2 ,AF6  I2S_ADCDATA  I2S2ext_SD是AF6!
前四行复用是AF5,为什么可以直接写成GPIO_AF_SPI2?

第二个问题:
如果只实现音乐播放功能,不要录音机的功能,是不是可以不接I2S_SDOUT(ADCDAT)这根线,即I2S不工作在全双工模式,而是单工模式?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-20 11:23
1,看宏定义值,好比骂人,傻逼,也可以骂成傻叉。意思都一样。   2,可以不接。
luojue10330
2楼-- · 2019-07-20 17:01
 精彩回答 2  元偷偷看……
luojue10330
3楼-- · 2019-07-20 19:57
void I2S2_Init(u16 I2S_Standard,u16 I2S_Mode,u16 I2S_Clock_Polarity,u16 I2S_DataFormat)
{
    I2S_InitTypeDef I2S_InitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);//使能SPI3时钟
       
        RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,ENABLE); //复位SPI3
        RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2,DISABLE);//结束复位
  
        I2S_InitStructure.I2S_Mode=I2S_Mode;//IIS模式
        I2S_InitStructure.I2S_Standard=I2S_Standard;//IIS标准
        I2S_InitStructure.I2S_DataFormat=I2S_DataFormat;//IIS数据长度
        I2S_InitStructure.I2S_MCLKOutput=I2S_MCLKOutput_Disable;//主时钟输出禁止
        I2S_InitStructure.I2S_AudioFreq=I2S_AudioFreq_Default;//IIS频率设置
        I2S_InitStructure.I2S_CPOL=I2S_Clock_Polarity;//空闲状态时钟电平
        I2S_Init(SPI2,&I2S_InitStructure);//初始化IIS

        SPI_I2S_DMACmd(SPI2,SPI_I2S_DMAReq_Tx,ENABLE);//SPI2 TX DMA请求使能.
    I2S_Cmd(SPI2,ENABLE);//SPI2 I2S EN使能.       
}
函数中为什么要先复位SPI3再停止复位??好多程序里都是这样。。有什么作用呢?
正点原子
4楼-- · 2019-07-21 00:22
luojue10330 发表于 2017-4-19 16:18
void I2S2_Init(u16 I2S_Standard,u16 I2S_Mode,u16 I2S_Clock_Polarity,u16 I2S_DataFormat)
{
    I2S ...

你按单片机的复位键,能一直按住么?一直按住,你单片机还会工作么?
动动脑。。。
luojue10330
5楼-- · 2019-07-21 02:01
 精彩回答 2  元偷偷看……
luojue10330
6楼-- · 2019-07-21 03:47
本帖最后由 luojue10330 于 2017-4-20 08:53 编辑
正点原子 发表于 2017-4-19 14:34
1,看宏定义值,好比骂人,傻逼,也可以骂成傻叉。意思都一样。   2,可以不接。

宏定义里确实找到了怎么一句:#define GPIO_AF6_SPI2         ((uint8_t)0x06)  /* SPI2 Alternate Function mapping (Only for STM32F411xE Devices) */
但是原子哥,明明写了Only for STM32F411xE Devices。。。探索者能怎么用吗:GPIO_PinAFConfig(GPIOC,GPIO_PinSource2,GPIO_AF6_SPI2)?

一周热门 更多>