在线时间23 小时
UID2001525
注册时间2013-4-15
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 303
- 最后登录
- 2024-10-24
|
发表于 2013-6-19 22:44:24
|
显示全部楼层
回复:[求助]PDB模块不会使用
在飞思卡尔官方例程代码中有关于PDB触发ADC采样的的例程代码,其中关于PDB的初始化代码如下,你可以参照修改。
void pdb_init(void)
{
int i;
//use ptd10 11 to indicate program status
//enable ptd10 11 as rgpio funciton
PORTD_PCR11 = PORT_PCR_MUX(1)|PORT_PCR_DSE_MASK;
PORTD_PCR10 = PORT_PCR_MUX(1)|PORT_PCR_DSE_MASK;
//enable ptd10 11 as output
GPIOD_PDDR |= 0xC00;
//output 0
GPIOD_PDOR =0;
//-------------------------pdb setup---------------------------------
//1.Set to software trigger input
//2.Enable pdb module
//3.Prescale set to 0
//4. LDMOD = 0: load immediately after setting LDOK
//5. enable PDB sequence error interrupt
//Only enable pdb module then you can write in all channel delay value
PDB0_SC = 0x00000000;
// NOTE: PDB must be enabled before writting to buffered registers
// otherwise, it will be always previous value.
//Enable PDB
PDB0_SC |= PDB_SC_PDBEN_MASK;
PDB0_SC |= PDB_SC_TRGSEL(0xF);
//Enable continuous mode
PDB0_SC |= PDB_SC_CONT_MASK;
//Enable pre-trigger out to ADC0/1
PDB0_CH0C1 = PDB_C1_TOS(3)|PDB_C1_EN(3);
PDB0_CH1C1 = PDB_C1_TOS(3)|PDB_C1_EN(3);
//Set CH0 DLY0/1
PDB0_CH0DLY0 = 0;
PDB0_CH0DLY1 = 3648; // delay the conversion time = 76us
//Set CH1 DLY0/1
PDB0_CH1DLY0 = 0;
PDB0_CH1DLY1 = 3648; // delay the conversion time = 76us
//Set PDB_MOD to 156us corresponding to sampling frequency Fs=6.4KHz
PDB0_MOD = 7488;
//Set interrupt delay value
PDB0_IDLY = 7488;
//Load delay value
PDB0_SC |= PDB_SC_LDOK_MASK;
//Enable interrupt
PDB0_SC |= PDB_SC_PDBIE_MASK;
PDB0_SC |= PDB_SC_PDBEIE_MASK;
//Set software trigger
PDB0_SC |= PDB_SC_SWTRIG_MASK;
} |
|