Nguyễn Hữu Sang
Thành Viên PIF
Có ai xài cái OV7670 (có DRAM) này rồi thì cho em hỏi em viết cái code thế này có sai j ko:
datasheet:"The device slave address are 42 for write and 43 for read."
Mà đọc từ thanh ghi PID (product ID, default = 0x76) để kiểm tra thì cứ ra 0xFF, hứng thì 0xFE, còn bỏ qua, cấu hình cho nó lun thì 1 hồi ra như zầy:
Em cũng bó tay rồi, ai biết chỉ dùm em
Code:
void OV7670Set(uint8_t addr, uint8_t val){
I2CMasterSlaveAddrSet(I2C1_BASE, OV7670_ADDR, false);
I2CMasterDataPut(I2C1_BASE, addr);
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while(I2CMasterBusy(I2C1_BASE));
I2CMasterDataPut(I2C1_BASE, val);
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH);
while(I2CMasterBusy(I2C1_BASE));
}
uint32_t OV7670Get(uint32_t addr){
I2CMasterSlaveAddrSet(I2C1_BASE, OV7670_ADDR, false);
I2CMasterDataPut(I2C1_BASE, addr);
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_SINGLE_SEND);
while(I2CMasterBusy(I2C1_BASE));
I2CMasterSlaveAddrSet(I2C1_BASE, OV7670_ADDR+1, true);
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE);
while(I2CMasterBusy(I2C1_BASE));
return(I2CMasterDataGet(I2C1_BASE));
}
Mà đọc từ thanh ghi PID (product ID, default = 0x76) để kiểm tra thì cứ ra 0xFF, hứng thì 0xFE, còn bỏ qua, cấu hình cho nó lun thì 1 hồi ra như zầy:
Em cũng bó tay rồi, ai biết chỉ dùm em