微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2523 I2S的从模式是不是不能用

mt2523 I2S的从模式是不是不能用

时间:10-02 整理:3721RD 点击:
      MT2523 I2S的从模式是不是不能用,为什么设置为slave模式之后,SCK和WS引脚还有波形输出

  1. #if 1
  2.         hal_GPIO_init(HAL_GPIO_11);   
  3.         hal_pinmux_set_function(HAL_GPIO_11, gpio_mode);   
  4.         hal_gpio_set_direction(HAL_GPIO_11, HAL_GPIO_DIRECTION_OUTPUT);         
  5.         // configure data in(DI) pin         
  6.         ret = hal_gpio_init(HAL_GPIO_12);   
  7.         hal_pinmux_set_function(HAL_GPIO_12, gpio_mode);   
  8.         ret = hal_gpio_set_direction(HAL_GPIO_12, HAL_GPIO_DIRECTION_INPUT);   
  9.         // configure word select(WS) pin   
  10.         ret = hal_gpio_init(HAL_GPIO_13);        
  11.         hal_pinmux_set_function(HAL_GPIO_13, gpio_mode);        
  12.         ret = hal_gpio_set_direction(HAL_GPIO_13, HAL_GPIO_DIRECTION_INPUT);         
  13.         // configure bit clock(BCLK) pin         
  14.         ret = hal_gpio_init(HAL_GPIO_14);         
  15.         hal_pinmux_set_function(HAL_GPIO_14, gpio_mode);         
  16.         ret = hal_gpio_set_direction(HAL_GPIO_14, HAL_GPIO_DIRECTION_INPUT);
  17. #endif

  18. static int32_t i2s_open(void)
  19. {
  20.         uint32_t memory_size = 0;
  21.         uint8_t  *memory;
  22.         hal_i2s_config_t i2s_config;
  23.         hal_i2s_status_t result = HAL_I2S_STATUS_OK;

  24.     LOG_I(WM8904,"ENTER\r\n");
  25.         i2s_config.clock_mode = HAL_I2S_SLAVE;//HAL_I2S_SLAVE;HAL_I2S_MASTER
  26.         // configure the RX settings
  27.         i2s_config.i2s_in.sample_rate = HAL_I2S_SAMPLE_RATE_8K;
  28.         i2s_config.i2s_in.channel_number = HAL_I2S_MONO;

  29.         // configure the TX settings
  30.         i2s_config.i2s_out.sample_rate = HAL_I2S_SAMPLE_RATE_8K;
  31.         i2s_config.i2s_out.channel_number = HAL_I2S_MONO;

  32.         // set the I2S to an external mode.
  33.         result = hal_i2s_init(HAL_I2S_TYPE_EXTERNAL_MODE);
  34.         if(HAL_I2S_STATUS_OK != result)
  35.         {        
  36.                 LOG_E(freeRTOS,"error result = %d \r\n",result);         
  37.         return -1;
  38.         }

  39.         result = hal_i2s_set_config(&i2s_config);
  40.         if(HAL_I2S_STATUS_OK != result)
  41.         {
  42.                 LOG_E(FreeRTOS,"error result = %d \r\n",result);         
  43.         return -2;
  44.         }
  45.         
  46.     // get the amount of internal-use memory   
  47.     hal_i2s_get_memory_size(&memory_size);
  48.         
  49.     LOG_I(WM8904,"memory_size =%d\r\n",memory_size);
  50.         /*memory_size = 640;
  51.         memory = pvPortMalloc(memory_size * sizeof(uint8_t));   
  52.         if(NULL == memory)
  53.         {      
  54.                 LOG_E(freertos,"error result = %d \r\n",result);
  55.         }*/   
  56.         memory = (uint8_t *)&i2s_memory_size[0];
  57.         result = hal_i2s_set_memory(memory);   
  58.         if(HAL_I2S_STATUS_OK != result)
  59.         {      
  60.                 LOG_E(freertos,"error result = %d \r\n",result);  
  61.         }

  62.     LOG_I(WM8904,"pass\r\n");

  63.     hal_i2s_register_tx_callback(user_i2s_tx_callback, NULL);   
  64.         hal_i2s_register_rx_callback(user_i2s_rx_callback, NULL);

  65.     LOG_I(WM8904,"pass\r\n");

  66.         result = hal_i2s_enable_tx();
  67.         if(HAL_I2S_STATUS_OK != result)
  68.         {
  69.                 LOG_E(freertos,"there is an  error \r\n");
  70.         return result;
  71.         }
  72.         
  73.         result = hal_i2s_enable_rx();        
  74.         if(HAL_I2S_STATUS_OK != result)
  75.         {
  76.                 LOG_E(freertos,"there is an  error \r\n");
  77.         return result;
  78.         }

  79.     LOG_I(WM8904,"EXIT\r\n");

  80.     return 1;
  81. }

复制代码

这个表示看不懂

看不懂。只能默默的为小编祈祷下。

路过,看看

路过,看一看

路过!

spec里一般都有说明

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top