[AIROC™ 蓝牙] [英飞凌CYW20829测评】进阶任务

[复制链接]
988|7
 楼主| 一路向北lm 发表于 2024-7-21 17:20 | 显示全部楼层 |阅读模式
1.ADC测试开发板的ADC引脚分布如下图所示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 一路向北lm 发表于 2024-7-21 17:25 | 显示全部楼层
本次评测在英飞凌官方的DC_Monitoring例子上进行修改,具体代码如下:
  1.     while (1)
  2.     {
  3.         /* Monitoring for every one second */
  4.         Cy_SysLib_Delay(1000);

  5.         Cy_ADCMic_SetInterruptMask(adcmic_0_HW, CY_ADCMIC_INTR_DC);
  6.         Cy_ADCMic_ClearInterrupt(adcmic_0_HW, CY_ADCMIC_INTR);

  7.         /* Enable the DC monitoring */
  8.         Cy_ADCMic_Enable(adcmic_0_HW);

  9.         /* ADC Settling Time */
  10.         Cy_SysLib_Delay(10);

  11.         /* Enable ADC timer to generate interrupt for reading the sample */
  12.         Cy_ADCMic_EnableTimer(adcmic_0_HW);

  13.         /* Wait for DC monitoring samples to complete */
  14.         while(batmon_cplt);

  15.         for (int i = 0; i < NO_OF_DC_SAMPLES; i++)
  16.         {
  17.             batmon_dc_avg = batmon_dc_avg + batmon_samples[i];
  18.         }

  19.         batmon_dc_avg = batmon_dc_avg/NO_OF_DC_SAMPLES;

  20.         /* Convert the ADC code in millivolts */
  21.         batt_level_mv = Cy_ADCMic_CountsTo_mVolts((int16_t)batmon_dc_avg, adcmic_0_config.dcConfig->context );

  22.         printf("batt_level_mv = %d \r\n",batt_level_mv);

  23.         /* Reset for the next set of readings */
  24.         batmon_cplt = 1;
  25.         batmon_dc_avg = 0;
  26.     }

 楼主| 一路向北lm 发表于 2024-7-21 17:28 | 显示全部楼层
将程序烧录到板子上,在串口上将会每秒输出ADC的电压

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 一路向北lm 发表于 2024-7-21 17:30 | 显示全部楼层
串口助手可以读取到ADC值的变化

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 一路向北lm 发表于 2024-7-21 17:34 | 显示全部楼层
2.硬件ASE测试,上次玩硬件ASE还是在读研的时候,这次来感受一次英飞凌的ase

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 一路向北lm 发表于 2024-7-21 17:37 | 显示全部楼层
本帖最后由 一路向北lm 于 2024-7-21 17:40 编辑

加解密算法具体如下:
  1. /*******************************************************************************
  2. * Function Name: encrypt_message_cfb
  3. ********************************************************************************
  4. * Summary: Function used to encrypt the message through ctr mode.
  5. *
  6. * Parameters:
  7. *  char * message - pointer to the message to be encrypted
  8. *  uint8_t size   - size of message to be encrypted.
  9. *
  10. * Return:
  11. *  void
  12. *
  13. *******************************************************************************/

  14. void encrypt_message_ctr(uint8_t* message, uint8_t size)
  15. {
  16.     uint32_t srcOffset;
  17.     cy_stc_cryptolite_aes_state_t aes_state;
  18.     cy_stc_cryptolite_aes_buffers_t aesBuffers;
  19.     uint8_t aes_block_count = 0;
  20.     cy_en_cryptolite_status_t res;
  21.     void* result;

  22.     aes_block_count =  (size % AES128_ENCRYPTION_LENGTH == 0) ?
  23.                        (size / AES128_ENCRYPTION_LENGTH)
  24.                        : (1 + size / AES128_ENCRYPTION_LENGTH);
  25.     /* Initializes the AES operation by setting key and key length */
  26.      res = Cy_Cryptolite_Aes_Init(CRYPTOLITE, aes_key, &aes_state, &aesBuffers);
  27.      if(res!=CY_CRYPTOLITE_SUCCESS)
  28.      {
  29.        CY_ASSERT(0);
  30.      }

  31.      srcOffset = 0;
  32.      result = memcpy(AesCtrIV_copied, AesCtrIV, sizeof(AesCtrIV));
  33.      res = Cy_Cryptolite_Aes_Ctr( CRYPTOLITE,
  34.                             aes_block_count * AES128_ENCRYPTION_LENGTH,
  35.                             &srcOffset,
  36.                             AesCtrIV_copied,
  37.                             encrypted_msg,
  38.                             message,
  39.                             &aes_state);
  40.      if(res!=CY_CRYPTOLITE_SUCCESS)
  41.      {
  42.        CY_ASSERT(0);
  43.      }
  44.      res = Cy_Cryptolite_Aes_Free(CRYPTOLITE,&aes_state);
  45.      if(res!=CY_CRYPTOLITE_SUCCESS)
  46.      {
  47.        CY_ASSERT(0);
  48.      }
  49. }

  50. /*******************************************************************************
  51. * Function Name: decrypt_message
  52. ********************************************************************************
  53. * Summary: Function used to decrypt the message for ctr mode.
  54. *
  55. * Parameters:
  56. *  char * message - pointer to the message to be decrypted
  57. *  uint8_t size   - size of message to be decrypted.
  58. *
  59. * Return:
  60. *  void
  61. *
  62. *******************************************************************************/

  63. void decrypt_message_ctr(uint8_t* message, uint8_t size)
  64. {
  65.     uint32_t srcOffset;
  66.     cy_stc_cryptolite_aes_state_t aes_state;
  67.     cy_stc_cryptolite_aes_buffers_t aesBuffers;
  68.     uint8_t aes_block_count = 0;
  69.     cy_en_cryptolite_status_t res;
  70.     void* result;
  71.     aes_block_count =  (size % AES128_ENCRYPTION_LENGTH == 0) ?
  72.                        (size / AES128_ENCRYPTION_LENGTH)
  73.                        : (1 + size / AES128_ENCRYPTION_LENGTH);

  74.     /* Initializes the AES operation by setting key and key length */
  75.     res = Cy_Cryptolite_Aes_Init(CRYPTOLITE, aes_key, &aes_state, &aesBuffers);
  76.     if(res!=CY_CRYPTOLITE_SUCCESS)
  77.     {
  78.         CY_ASSERT(0);
  79.     }
  80.     srcOffset = 0;
  81.     /* Start decryption operation*/
  82.     result = memcpy(AesCtrIV_copied, AesCtrIV, sizeof(AesCtrIV));
  83.     res = Cy_Cryptolite_Aes_Ctr(  CRYPTOLITE,
  84.                             aes_block_count * AES128_ENCRYPTION_LENGTH,
  85.                             &srcOffset,
  86.                             AesCtrIV_copied,
  87.                             decrypted_msg,
  88.                             encrypted_msg,
  89.                             &aes_state);
  90.     if(res!=CY_CRYPTOLITE_SUCCESS)
  91.     {
  92.         CY_ASSERT(0);
  93.     }
  94.     res = Cy_Cryptolite_Aes_Free(CRYPTOLITE,&aes_state);
  95.     if(res!=CY_CRYPTOLITE_SUCCESS)
  96.     {
  97.         CY_ASSERT(0);
  98.     }
  99.     decrypted_msg[size]='\0';
  100. }


 楼主| 一路向北lm 发表于 2024-7-21 17:38 | 显示全部楼层

对该算法实际测试了,本次评测在AES_CRYPTOLITE例程测试,IDE编程后,烧写到开发板中,串口助手显示如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 一路向北lm 发表于 2024-7-21 17:39 | 显示全部楼层
英飞凌CYW20829芯片硬件加解密模块确实牛掰,好用啊,上手简单....极力推荐
您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

3837

帖子

81

粉丝
快速回复 在线客服 返回列表 返回顶部