ADS8328软件复位失败
PCB板短时间内重复开关机,导致ADS8328初始化失败,看PDF,有POR复位和CFR_D0复位。选择CFR_D0复位
程序如下,但是没有效果。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
while(bit_status == RESET) bit_status = (GPIOE->IDR & (uint8_t)ADBUSY)? SET : RESET;
GPIOB->BRR = ADCS;
SPI1->DR =0xEFFE;
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");__ASM("NOP");
GPIOB->BSRR = ADCS;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
采用的是控制芯片自带的SPI,所以往寄存器写0XEFFE就行,正常开关机,读取数据都正常,只有短时间重复开关机才会如此。
问题:
1--资料上写的:The converter has two reset mechanisms, a power-on reset (POR) and a software reset using CFR_D0. These two mechanisms are NOR-ed internally. When a reset (software or POR) is issued, all register data are set to the default values (all 1s) and the SDO output (during the cycle immediately after reset) is set to all 1s. The state machine is reset to the power-on state。里面的1S是指恢复到默认值需要1秒吗?
2--寄存器值0xEFFE是否正确?
3--转换时需要操作CONVERT管脚,操作寄存器是否需要?
这个问题还真有的麻烦.
短时间重复开关机问题, 往往是 POR 方面的硬件监控问题, 或者是 MCU 发指令过程中的断电导致指令发送错误等因素.