1.ADC测试开发板的ADC引脚分布如下图所示:

作者: 一路向北lm 时间: 2024-7-21 17:25
本次评测在英飞凌官方的DC_Monitoring例子上进行修改,具体代码如下:
复制
while (1)
{
/* Monitoring for every one second */
Cy_SysLib_Delay(1000);
Cy_ADCMic_SetInterruptMask(adcmic_0_HW, CY_ADCMIC_INTR_DC);
Cy_ADCMic_ClearInterrupt(adcmic_0_HW, CY_ADCMIC_INTR);
/* Enable the DC monitoring */
Cy_ADCMic_Enable(adcmic_0_HW);
/* ADC Settling Time */
Cy_SysLib_Delay(10);
/* Enable ADC timer to generate interrupt for reading the sample */
Cy_ADCMic_EnableTimer(adcmic_0_HW);
/* Wait for DC monitoring samples to complete */
while(batmon_cplt);
for (int i = 0; i < NO_OF_DC_SAMPLES; i++)
{
batmon_dc_avg = batmon_dc_avg + batmon_samples[i];
}
batmon_dc_avg = batmon_dc_avg/NO_OF_DC_SAMPLES;
/* Convert the ADC code in millivolts */
batt_level_mv = Cy_ADCMic_CountsTo_mVolts((int16_t)batmon_dc_avg, adcmic_0_config.dcConfig->context );
printf("batt_level_mv = %d \r\n",batt_level_mv);
/* Reset for the next set of readings */
batmon_cplt = 1;
batmon_dc_avg = 0;
}
作者: 一路向北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 编辑
加解密算法具体如下:
复制
/*******************************************************************************
* Function Name: encrypt_message_cfb
********************************************************************************
* Summary: Function used to encrypt the message through ctr mode.
*
* Parameters:
* char * message - pointer to the message to be encrypted
* uint8_t size - size of message to be encrypted.
*
* Return:
* void
*
*******************************************************************************/
void encrypt_message_ctr(uint8_t* message, uint8_t size)
{
uint32_t srcOffset;
cy_stc_cryptolite_aes_state_t aes_state;
cy_stc_cryptolite_aes_buffers_t aesBuffers;
uint8_t aes_block_count = 0;
cy_en_cryptolite_status_t res;
void* result;
aes_block_count = (size % AES128_ENCRYPTION_LENGTH == 0) ?
(size / AES128_ENCRYPTION_LENGTH)
: (1 + size / AES128_ENCRYPTION_LENGTH);
/* Initializes the AES operation by setting key and key length */
res = Cy_Cryptolite_Aes_Init(CRYPTOLITE, aes_key, &aes_state, &aesBuffers);
if(res!=CY_CRYPTOLITE_SUCCESS)
{
CY_ASSERT(0);
}
srcOffset = 0;
result = memcpy(AesCtrIV_copied, AesCtrIV, sizeof(AesCtrIV));
res = Cy_Cryptolite_Aes_Ctr( CRYPTOLITE,
aes_block_count * AES128_ENCRYPTION_LENGTH,
&srcOffset,
AesCtrIV_copied,
encrypted_msg,
message,
&aes_state);
if(res!=CY_CRYPTOLITE_SUCCESS)
{
CY_ASSERT(0);
}
res = Cy_Cryptolite_Aes_Free(CRYPTOLITE,&aes_state);
if(res!=CY_CRYPTOLITE_SUCCESS)
{
CY_ASSERT(0);
}
}
/*******************************************************************************
* Function Name: decrypt_message
********************************************************************************
* Summary: Function used to decrypt the message for ctr mode.
*
* Parameters:
* char * message - pointer to the message to be decrypted
* uint8_t size - size of message to be decrypted.
*
* Return:
* void
*
*******************************************************************************/
void decrypt_message_ctr(uint8_t* message, uint8_t size)
{
uint32_t srcOffset;
cy_stc_cryptolite_aes_state_t aes_state;
cy_stc_cryptolite_aes_buffers_t aesBuffers;
uint8_t aes_block_count = 0;
cy_en_cryptolite_status_t res;
void* result;
aes_block_count = (size % AES128_ENCRYPTION_LENGTH == 0) ?
(size / AES128_ENCRYPTION_LENGTH)
: (1 + size / AES128_ENCRYPTION_LENGTH);
/* Initializes the AES operation by setting key and key length */
res = Cy_Cryptolite_Aes_Init(CRYPTOLITE, aes_key, &aes_state, &aesBuffers);
if(res!=CY_CRYPTOLITE_SUCCESS)
{
CY_ASSERT(0);
}
srcOffset = 0;
/* Start decryption operation*/
result = memcpy(AesCtrIV_copied, AesCtrIV, sizeof(AesCtrIV));
res = Cy_Cryptolite_Aes_Ctr( CRYPTOLITE,
aes_block_count * AES128_ENCRYPTION_LENGTH,
&srcOffset,
AesCtrIV_copied,
decrypted_msg,
encrypted_msg,
&aes_state);
if(res!=CY_CRYPTOLITE_SUCCESS)
{
CY_ASSERT(0);
}
res = Cy_Cryptolite_Aes_Free(CRYPTOLITE,&aes_state);
if(res!=CY_CRYPTOLITE_SUCCESS)
{
CY_ASSERT(0);
}
decrypted_msg[size]='\0';
}
作者: 一路向北lm 时间: 2024-7-21 17:38
对该算法实际测试了,本次评测在AES_CRYPTOLITE例程测试,IDE编程后,烧写到开发板中,串口助手显示如下:

:
---------------------
作者:一路向北lm
链接:https://bbs.21ic.com/icview-3390792-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

212

被折叠的 条评论
为什么被折叠?



