Någon som har hållit på med DCMI förut?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
rvl
Inlägg: 5720
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Någon som har hållit på med DCMI förut?

Inlägg av rvl »

DanielM skrev: 15 april 2022, 01:25:47 Men D[7:0] är bara 8 bytes. Hur kan det vara en rad?
D[7:0] är 8 bits!
Användarvisningsbild
ffredrik
Inlägg: 340
Blev medlem: 20 oktober 2009, 17:52:18
Ort: Göinge

Re: Någon som har hållit på med DCMI förut?

Inlägg av ffredrik »

Ja, det är tydligen svårt med terminologin.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

Det verkar som att det INTE går att ha I2C på denna kamera.

Edit:

Nej du. Jag får ingen I2C anslutning att fungera med den. Jag skannar om det finns någon I2C address på bussen. Variabeln addr förblir 0x00 och errors blir 128.

Kod: Markera allt

  uint8_t addr = 0;
  uint8_t errors = 0;
  uint8_t busys = 0;
  uint8_t timeouts = 0;
  for(uint8_t i = 0; i < 128; i++){
	  HAL_StatusTypeDef status = HAL_I2C_IsDeviceReady(&hi2c1, i, 5, 100);
	  if(status == HAL_ERROR){
		  errors++;
	  }else if(status == HAL_BUSY){
		  busys++;
	  }else if(status == HAL_TIMEOUT){
		  timeouts++;
	  }else if(status == HAL_OK){
		  addr = i;
		  break;
	  }
  }

Senast redigerad av DanielM 15 april 2022, 21:27:18, redigerad totalt 1 gång.
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Någon som har hållit på med DCMI förut?

Inlägg av JimmyAndersson »

Kanske du kan hitta någon ledtråd här:
https://e2e.ti.com/support/processors-g ... ccb-vs-i2c

Jag har kollat mer i databladet och tror att jag förstår hur den skickar bild-datan. Kan försöka skriva ned lite när jag inte står med mobilen och steker köttbullar. :)

Rvl & ffredrik:
Vem som helst kan göra en miss.
Jag tänkte inte på det igår. (Och då programmerar jag ändå assembler varje dag. :))
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

Jag har verkligen granskat noggrant nu och I2C enheten får tydligen inget svar från min kamera. Troligtvis så är det HAL_ERROR som retuneras tillbaka då.
Däremot så har kameran fysisk anslutning då jag kan skicka ut 3.3V på pinnarna utan problem.

Så då är det helt enkelt att I2C ej fungerar med OV7670.
Jag har nämligen renskrivit denna kod till min STM32-C kod för att passa med CubeMX.
https://github.com/ctc8631/ov7670/blob/ ... c/OV7670.c

Men jag får den ändå inte att fungera.
Vi kan börja med tidsdiagrammet.
Skärmklipp.PNG
För att skicka data:
Enligt min kod så finns det en funktion som heter

Kod: Markera allt

ErrorStatus camera_write_register(uint8_t address, uint8_t value){
	// Create start condition on SCCB/I2C interface
	SCCB_start();

	// Write data (Address of slave device for Write) on SCCB/I2C interface
	if(SCCB_write(WriteAddress) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Write data (Address of register in Camera Module)on SCCB/I2C interface
	HAL_Delay(1);
	if(SCCB_write(address) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Write data (Data to write into register in Camera Module)on SCCB/I2C interface
	if(SCCB_write(value) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Create stop condition on SCCB/I2C interface
	SCCB_stop();

	return SUCCESS;
}
.

Där ST-standarden

Kod: Markera allt

typedef enum{
  SUCCESS = 0U,
  ERROR = !SUCCESS
} ErrorStatus;
1. Koden först startar SCCB igenom att sätta D hög, sedan C hög. När dom båda är höga, så börjar D falla och sedan faller C. Då har vi börjat.
Skärmklipp.PNG

Kod: Markera allt

static void SCCB_start(){
	// Configure SCCB_D of SCCB/I2C interface as output for write
	SCCB_D_dir(OUT);
	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);
}
2. Då anropas denna kod

Kod: Markera allt

static ErrorStatus SCCB_write(uint8_t data){
	uint8_t status;

	// Configure SCCB_D of SCCB/I2C interface as output for write
	SCCB_D_dir(OUT);

	// Write data bit by bit on SCCB/I2C
	for(uint8_t i = 0; i < 8; i++) {
		if((data & 0x80) == 0x80)		// If bit in Data is high, write high on SCCB/I2C
			HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
		else							// If bit in Data is low, write low on SCCB/I2C
			HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);

		data <<= 1;						// Rotate Data for write next bit

		// Create clock pulse on SCCB/I2C
		// ___  On SIO_C pin (SCCB clock)
		//    \___
		HAL_Delay(1);
		HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
		HAL_Delay(1);
		HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
		HAL_Delay(1);
	}

	// Read acknowladge from Camera Module to confirm received data
	HAL_Delay(1);

	// Configure SCCB_D of SCCB/I2C interface as input for read
	SCCB_D_dir(IN);
	HAL_Delay(1);
	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	// If acknowladge is OK return SUCCESS else if is incorrect return ERROR
	if(!HAL_GPIO_ReadPin(SCCB_D_GPIO_Port, SCCB_D_Pin))
		status = ERROR;
	else
		status = SUCCESS;

	// Pulse on SCCB/I2C fall down from high
	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	// Configure SCCB_D of SCCB/I2C interface back to output for write
	SCCB_D_dir(OUT);

	return status;
}
Där denna kod gör om INPUT till OUTPUT eller OUTPUT till INPUT för D signalen.

Kod: Markera allt

static void SCCB_D_dir(Direction Dir){
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.Pin =  SCCB_D_Pin;
	GPIO_InitStructure.Pull = GPIO_NOPULL;
	GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
	GPIO_InitStructure.Mode = Dir == IN ? GPIO_MODE_INPUT : GPIO_MODE_OUTPUT_PP;
	HAL_GPIO_Init(SCCB_D_GPIO_Port, &GPIO_InitStructure);
}
Denna kod fungerar som att om sista bitten på 7:e elementet (MSB) är en 1:a så skickar vi en HÖG signal på D. Annars låg signal.
Samtidigt som klockan C tickar på.

Kod: Markera allt

if((data & 0x80) == 0x80)		// If bit in Data is high, write high on SCCB/I2C
     HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
else							// If bit in Data is low, write low on SCCB/I2C
     HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);

data <<= 1;						// Rotate Data for write next bit

HAL_Delay(1);
HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
HAL_Delay(1);
HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
HAL_Delay(1);
Skärmklipp.PNG
3. Nu kommer ett problemet. Jag får ibland ERROR här när jag ska läsa av mitt ACK.

Kod: Markera allt

	SCCB_D_dir(IN);
	HAL_Delay(1);
	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	// If acknowladge is OK return SUCCESS else if is incorrect return ERROR
	if(!HAL_GPIO_ReadPin(SCCB_D_GPIO_Port, SCCB_D_Pin))
		status = ERROR;
	else
		status = SUCCESS;

	// Pulse on SCCB/I2C fall down from high
	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	// Configure SCCB_D of SCCB/I2C interface back to output for write
	SCCB_D_dir(OUT);
Det är tydligen denna lilla puls.
Skärmklipp.PNG
Här är hela min kod. Det är väldigt svårt att tolka detta tidsdiagram.

Kod: Markera allt

/**
 * @brief 	Change configuration I/O pin SCCB_D as OUT/IN
 * @param	Configure SCCB_D pin as IN/OUT
 * @arg 	IN = 1, OUT = 0
 * @retval	None
 */
static void SCCB_D_dir(Direction Dir){
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.Pin =  SCCB_D_Pin;
	GPIO_InitStructure.Pull = GPIO_NOPULL;
	GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
	GPIO_InitStructure.Mode = Dir == IN ? GPIO_MODE_INPUT : GPIO_MODE_OUTPUT_PP;
	HAL_GPIO_Init(SCCB_D_GPIO_Port, &GPIO_InitStructure);
}

/**
 * @brief 	Read data form  SCCB/I2C interface
 * @param	None
 * @retval	Data: received data from SCCB/I2C interface
 */
static uint8_t SCCB_read(){
	// Write to Data zero for correct return data
	uint8_t data = 0;

	// Configure SCCB_D of SCCB/I2C interface as input for read
	SCCB_D_dir(IN);

	// Delay for  SCCB/I2C interface
	HAL_Delay(1);

	// Read data from SCCBI/I2C interface
	for(uint8_t i = 8; i > 0; i--) {
		// Delay for  SCCB/I2C
		HAL_Delay(1);
		HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
		HAL_Delay(1);

		// Shift data << 1
		data = data << 1;

		// Read SCCB_D pin value
		if(HAL_GPIO_ReadPin(SCCB_D_GPIO_Port, SCCB_D_Pin))
				data = data + 1;

		HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
		HAL_Delay(1);
	}

	// Return received data from SCCBI/I2C interface
	return data;
}

/**
 * @brief  Write data on SCCB/I2C interface
 * @param  Data: data for write on SCCBI/I2C interface
 * @retval status
 */
static ErrorStatus SCCB_write(uint8_t data){
	uint8_t status;

	// Configure SCCB_D of SCCB/I2C interface as output for write
	SCCB_D_dir(OUT);

	// Write data bit by bit on SCCB/I2C
	for(uint8_t i = 0; i < 8; i++) {
		if((data & 0x80) == 0x80)		// If bit in Data is high, write high on SCCB/I2C
			HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
		else							// If bit in Data is low, write low on SCCB/I2C
			HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);

		data <<= 1;						// Rotate Data for write next bit

		// Create clock pulse on SCCB/I2C
		// ___     ___    __On SIO_C pin (SCCB clock)
		//    \___/   \__/  \__
		HAL_Delay(1);
		HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
		HAL_Delay(1);
		HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
		HAL_Delay(1);
	}

	// Read acknowladge from Camera Module to confirm received data
	HAL_Delay(1);

	// Configure SCCB_D of SCCB/I2C interface as input for read
	SCCB_D_dir(IN);
	HAL_Delay(1);
	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	// If acknowladge is OK return SUCCESS else if is incorrect return ERROR
	if(!HAL_GPIO_ReadPin(SCCB_D_GPIO_Port, SCCB_D_Pin))
		status = ERROR;
	else
		status = SUCCESS;

	// Pulse on SCCB/I2C fall down from high
	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	// Configure SCCB_D of SCCB/I2C interface back to output for write
	SCCB_D_dir(OUT);

	return status;
}

/**
 * @brief  Create on  SCCB/I2C interface "START" condition of transmission
 * 	             |-> Start
 * 			  ___|
 * 		SCCB_D    \______
 * 			  ______
 * 		SIO_C       \___
 * @param  None
 * @retval None
 */
static void SCCB_start(){
	// Configure SCCB_D of SCCB/I2C interface as output for write
	SCCB_D_dir(OUT);
	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);
}

/**
 * @brief  Create on  SCCB/I2C interface "STOP" condition of transmission
 * 	             |-> Stop
 * 				 |	  __
 * 		SCCB_D ______/  \__
 * 			      ________
 * 		SIO_C ___/
 * @param  None
 * @retval None
 */
static void SCCB_stop(){
	// Configure SCCB_D of SCCB/I2C interface as output for write
	SCCB_D_dir(OUT);
	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
	HAL_Delay(1);
}

/**
 * @brief  Create on SCCB/I2C interface "NoACK"
 * 	          _____
 * 		SCCB_D 	   \___
 * 			  ___
 * 		SIO_C 	 \_____
 * @param  None
 * @retval None
 */
static void no_ack(){
	// Configure SCCB_D of SCCB/I2C interface as output for write
	SCCB_D_dir(OUT);

	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_SET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_C_GPIO_Port, SCCB_C_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);

	HAL_GPIO_WritePin(SCCB_D_GPIO_Port, SCCB_D_Pin, GPIO_PIN_RESET);
	HAL_Delay(1);
}

void camera_reset(){
	camera_write_register(OV7670_COM7, 0x80);
}

ErrorStatus camera_write_register(uint8_t address, uint8_t value){
	// Create start condition on SCCB/I2C interface
	SCCB_start();

	// Write data (Address of slave device for Write) on SCCB/I2C interface
	if(SCCB_write(WriteAddress) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Write data (Address of register in Camera Module)on SCCB/I2C interface
	HAL_Delay(1);
	if(SCCB_write(address) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Write data (Data to write into register in Camera Module)on SCCB/I2C interface
	if(SCCB_write(value) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Create stop condition on SCCB/I2C interface
	SCCB_stop();

	return SUCCESS;
}

ErrorStatus camera_read_register(uint8_t address, uint8_t *data){
	// Create start condition on SCCB/I2C interface
	SCCB_start();

	// Write data (Address of slave device for Write) on SCCB/I2C interface
	if(SCCB_write(WriteAddress) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Write data (Address of register in Camera Module)on SCCB/I2C interface
	HAL_Delay(1);
	if(SCCB_write(address) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}

	// Create stop condition on SCCB/I2C interface
	SCCB_stop();

	// Delay for SCCB/I2C
	HAL_Delay(1);

	// Create start condition on SCCB/I2C interface
	SCCB_start();

	// Write data (Address of slave device for Read) on SCCB/I2C interface
	if(SCCB_write(ReadAddress) == ERROR){
		SCCB_stop();			// Create stop condition on SCCB/I2C interface
		return ERROR;
	}
	HAL_Delay(1);

	// Received data from Camera Module (SCCB/I2C)
	*data = SCCB_read();

	// No acknowlage on SCCB/I2C interface
	no_ack();

	// Create stop condition on SCCB/I2C interface
	SCCB_stop();

	// Return data
	return SUCCESS;
}
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

Nu har jag en Nucelo F446RE på bordet mitt, tillsammans med OV7670 kamera.
Jag har laddat ned detta projekt
https://github.com/erikandre/stm32-ov7670

Men hur importerar jag projektet?
Det är alltså inget CubeMX projekt då den saknar .ioc fil.
Om jag skapar nytt "empty" projekt så saknar projektet massa filer.

Så hur gör man här för att importera ett manuellt skrivet STM32 HAL-projekt?
Skärmklipp.PNG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
agehall
Inlägg: 418
Blev medlem: 12 augusti 2020, 19:27:54

Re: Någon som har hållit på med DCMI förut?

Inlägg av agehall »

Måste väl gå att importera källkoden fil för fil om inte annat. Själv har jag aldrig pillat med CubeMX IDE utan kör allt i PlatformIO så man har lite bättre kontroll på vad som händer. Kan varmt rekommendera det.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

Jag har aldrig kört det. Jag anser att mycket ska vara plug 'n' play och register ska man bara hålla på med vid felsökning.
Hur som helst så tror jag att denna kamera jag har, är sönder. Jag testar alla typer av bibliotek. INGA fungerar.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

Kan man ha I2C och SCCB på samma bus?
Någon som vet en DCMI kamera med I2C?
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Någon som har hållit på med DCMI förut?

Inlägg av JimmyAndersson »

Första frågan:
De är till stor del kompatibla, men skiljer sig också både när det gäller mjukvara och hårdvara, så mitt svar är nog:
Njäe, helst inte. (Även om det går att lösa med en massa krångel.)

Kort sagt så kan man helt enkelt inte lita på att SCCB är exakt samma sak som som i2c. Tyvärr.

Edit: Kamera med i2c: Jag har inte stött på någon tyvärr.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

Okej. Det var otur. Jag gjorde nämligen ett PCB som har en DAC (I2C) som sitter ihop med OV7670 (SCCB). Jag får inte kameran att fungera. Ingen kontakt med den. Jag vet dock inte varför.

Så jag tänkte köpa in en annan kamera. Helst någon som har DCMI och I2C. Vore helt perfekt! Men hittar inga. Skapade ST DCMI bara för att anpassa sig mot kina-kameror eller?

Eller en UART kamera går också fint!

Jag har möjlighet till:
- I2C
- Bitbanga SPI
- DCMI
- UART

Behöver en billig kamera som ger en dålig upplösning = Lite minne.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

JimmyAndersson skrev: 6 maj 2022, 00:04:00 Edit: Kamera med i2c: Jag har inte stött på någon tyvärr.
Varför anses det vara ovanligt?

Hur som jag göra här?
Att bara slänga med OV7670 känns ändå bortkastat. Jag menar, jag har inte hittat felet, dvs inte lärt mig. Jag anser att kameran är sönder. Men jag har MAX utsatt den för högst 3.3V. Inge mer. Så den kan inte egentligen ha gått sönder.

Egentligen så skulle jag kunna avdeklarera I2C och endast bitbanga SCCB när jag vill deklarera kamerans register. Det skall bara ske vid start av processorn en gång.
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Någon som har hållit på med DCMI förut?

Inlägg av JimmyAndersson »

Stopp en sekund nu…
Ovanligt? Det har jag inte skrivit. :)

Kolla konversationen:

Daniel: Någon som vet en DCMI kamera med I2C?

Jimmy: Jag har inte stött på någon tyvärr.

Daniel: Varför anses det vara ovanligt?



Hur gick det där till? :D


(Sen ser jag att du har fastnat lite vid ordet ”bitbanga”. :wink: )


Hmm… Det finns ju kameror med ethernet. Axis (svenskt jättetrevligt företag) kameror brukar ha utmärkt dokumentation dessutom. Men då är det kompletta kameror, typ övervakning/konsert.

Men personligen hade jag tyckt det var kuligast med DCMI.
Gillar det formatet av någon anledning. Men å andra sidan.. vad vet jag.. Jag gillar ju även assembler. :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Någon som har hållit på med DCMI förut?

Inlägg av JimmyAndersson »

Jag läste önskemålen igen.
”Lite minne”… Då hade jag nog tittat efter vad Arduino-modulerna använder. Dvs vilka kameror som sitter på deras kamera-moduler. Vem vet, det kanske är i2c.

(Att jag kom att tänka på Arduino när det gällde minne, har inget att göra med Arduinos minne. Jag funderade bara på vad andra använder för kameror. That’s it! :))

Och man får väl gnälla på Arduino om man blir gladare av det, men ju mer man diskvalificerar andra, desto ensammare blir man…..
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Någon som har hållit på med DCMI förut?

Inlägg av DanielM »

JimmyAndersson skrev: 6 maj 2022, 23:47:53 Stopp en sekund nu…
Ovanligt? Det har jag inte skrivit. :)

Kolla konversationen:

Daniel: Någon som vet en DCMI kamera med I2C?

Jimmy: Jag har inte stött på någon tyvärr.

Daniel: Varför anses det vara ovanligt?



Hur gick det där till? :D


(Sen ser jag att du har fastnat lite vid ordet ”bitbanga”. :wink: )


Hmm… Det finns ju kameror med ethernet. Axis (svenskt jättetrevligt företag) kameror brukar ha utmärkt dokumentation dessutom. Men då är det kompletta kameror, typ övervakning/konsert.

Men personligen hade jag tyckt det var kuligast med DCMI.
Gillar det formatet av någon anledning. Men å andra sidan.. vad vet jag.. Jag gillar ju även assembler. :)

Okej. Vi antar att I2C med kamera ej existerar.

TomasL skrev Bitbanga. Men jag vill skriva Bitlanga för det låter mer olagligt och något som man ej bör göra om det finns andra propra alternativ.

Jag tror att jag ska göra ett försök till på DCMI med min OV7670. Det känns som jag bör klara av den också.
Men jag vet inte om jag kan använda OV7670(SCCB) + MCP4728(I2C) på samma bus... :humm:

Enligt detta forum från Texas så kan man använda I2C med OV7670.
https://e2e.ti.com/support/processors-g ... ccb-vs-i2c
Skriv svar