U8 ADC0809_StartChannel(U8)时序
时间: 2023-06-01 09:03:21 浏览: 50
1. 将所选通道的地址码送入ADC0809的地址输入端(A0-A2)。
2. 将片选端(CS)拉低,使ADC0809处于选中状态。
3. 将写使能端(WR)拉低,使ADC0809处于写入状态。
4. 等待一段时间,以使ADC0809内部的采样电容充电稳定。
5. 将写使能端(WR)拉高,开始采样并转换模拟信号。
6. 等待一定的转换时间,使ADC0809完成模拟信号到数字信号的转换。
7. 将读使能端(RD)拉低,使ADC0809处于输出状态。
8. 从数据输出端(D0-D7)读取转换后的数字信号。
9. 将片选端(CS)拉高,结束本次操作。
相关问题
解释这段代码逻辑 void TPS929120_CorrespondDriverIndexFrmtypeSts(uint8 u8_bus_id_in,uint8 u8_frmtype) { uint8 u8_ValidDrvNum = 0; uint8 u8_RepeatRnblDrvNum = 0; u8_RepeatRnblDrvNum = un_BusShareRam[u8_bus_id_in].st_Tps929120.u8_RepeatRnblMatrixDriverNumber; u8_ValidDrvNum = un_BusShareRam[u8_bus_id_in].st_Tps929120.u8_ValidMatrixDriverNumber; if(un_BusShareRam[u8_bus_id_in].st_Tps929120.st_DrvRnblSts.u8_Refresh_Driver_index == 0) { if( (u8_ValidDrvNum - un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount < u8_RepeatRnblDrvNum) && \ (u8_ValidDrvNum - un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount > 0) ) { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltFrmtypeCount = 0; un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_SendCpltDrvCounter = 0; if(u8_frmtype == TPS929120_PWMFRMMODE) { if(g_u8_Tps92912xFixedOperationAddressflg == 1) { if(TPS929120_FIXEDCHIPNUM == 2) { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = u8_RepeatRnblDrvNum; } else if(TPS929120_FIXEDCHIPNUM == 1) { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = TPS929120_FIXEDCHIPNUM + \ (u8_ValidDrvNum - un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount); } } else { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = \ (u8_ValidDrvNum - un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount) ; } } else { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = \ (u8_ValidDrvNum - un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount) ; } } else if(0 == (u8_ValidDrvNum - un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount)) { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltFrmtypeCount = 0; un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_SendCpltDrvCounter = 0; un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount = 0; if(u8_ValidDrvNum >= u8_RepeatRnblDrvNum) { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = u8_RepeatRnblDrvNum; } else { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = u8_ValidDrvNum; } } else { un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltFrmtypeCount = 0; un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_SendCpltDrvCounter = 0; un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_FrmPackDrvNumPerRnbl = u8_RepeatRnblDrvNum; } un_BusShareRam[u8_bus_id_in].st_Tps929120.st_DrvRnblSts.u8_Refresh_Driver_index = 1; } else { /NO CODE/ } }
&& (un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount != u8_ValidDrvNum) )
{
un_BusShareRam[u8_bus_id_in].st_Tps929120.u8_CurRnblDrvIndex = un_BusShareRam[u8_bus_id_in].st_Tps929120.st_FrmtypeSts[u8_frmtype].u8_CpltDrvCount;
un_BusShareRam[u8_bus_id_in].st_Tps929120.st_DrvRnblSts.u8_Refresh_Driver_index = 1;
}
else
{
un_BusShareRam[u8_bus_id_in].st_Tps929120.u8_CurRnblDrvIndex ++;
if(un_BusShareRam[u8_bus_id_in].st_Tps929120.u8_CurRnblDrvIndex >= u8_ValidDrvNum)
{
un_BusShareRam[u8_bus_id_in].st_Tps929120.u8_CurRnblDrvIndex = 0;
}
un_BusShareRam[u8_bus_id_in].st_Tps929120.st_DrvRnblSts.u8_Refresh_Driver_index = 1;
}
}
答:这段代码实现的逻辑是,根据输入的总线ID和帧类型,来确定当前可用的驱动器数量以及可重复的驱动器数量。然后根据当前驱动器的处理状态来决定当前要处理的驱动器的索引值,并通过更新刷新驱动器索引的状态值来确保下次处理时能正确地获取当前可用的驱动器数量和可重复的驱动器数量以及处理状态。具体是根据当前帧类型下已完成处理的驱动器数量以及可重复的驱动器数量来计算当前处理的驱动器索引值,并在更新当前驱动器索引值后更新刷新驱动器索引的状态为1,确保下次处理时能更新正确的驱动器索引进行处理。
typedef u8 uint8_t;
typedef u8 uint8_t是将u8重新定义为uint8_t的别名。根据提供的引用内容,我们可以看到typedef unsigned char uint8_t将unsigned char重新定义为uint8_t。因此,typedef u8 uint8_t的意思是将u8重新定义为uint8_t。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [typedef uint8_t u8;(stm32数据类型)](https://blog.csdn.net/gutie_bartholomew/article/details/129738962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [u8,u16,u32和uint8_t,uint16_t,uint32_t的含义](https://blog.csdn.net/weixin_30366435/article/details/117153645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]