Skip to content

Commit b1129d6

Browse files
committed
Fix: error writing Gigadevice status registers
1 parent ec165a7 commit b1129d6

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

IMSProg_programmer/dialogsfdp.cpp

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ void DialogSFDP::on_pushButton_3_clicked()
356356
if (QString::compare(ui->lineEdit_sr21->text(), "0", Qt::CaseInsensitive)) r2 = r2 + 2;
357357
if (QString::compare(ui->lineEdit_sr20->text(), "0", Qt::CaseInsensitive)) r2 = r2 + 1;
358358

359-
//Writing status registers 0,1
359+
//Writing status registers 0,1 for Winbond
360360

361361
SPI_CONTROLLER_Chip_Select_Low();
362362
SPI_CONTROLLER_Write_One_Byte(0x06);
@@ -383,6 +383,62 @@ void DialogSFDP::on_pushButton_3_clicked()
383383
//Close the CH341a device
384384
ch341a_spi_shutdown();
385385

386+
//Writing status registers 0,1 for not Winbond
387+
if (numOfRegisters > 0)
388+
{
389+
stCH341 = ch341a_spi_init();
390+
391+
SPI_CONTROLLER_Chip_Select_Low();
392+
SPI_CONTROLLER_Write_One_Byte(0x06);
393+
SPI_CONTROLLER_Chip_Select_High();
394+
usleep(1);
395+
396+
SPI_CONTROLLER_Chip_Select_Low();
397+
SPI_CONTROLLER_Write_One_Byte(0x50);
398+
SPI_CONTROLLER_Chip_Select_High();
399+
usleep(1);
400+
401+
SPI_CONTROLLER_Chip_Select_Low();
402+
SPI_CONTROLLER_Write_One_Byte(0x01);
403+
SPI_CONTROLLER_Write_One_Byte(r0);
404+
SPI_CONTROLLER_Chip_Select_High();
405+
usleep(1);
406+
407+
SPI_CONTROLLER_Chip_Select_Low();
408+
SPI_CONTROLLER_Write_One_Byte(0x04);
409+
SPI_CONTROLLER_Chip_Select_High();
410+
usleep(1);
411+
412+
//Close the CH341a device
413+
ch341a_spi_shutdown();
414+
usleep(1);
415+
416+
stCH341 = ch341a_spi_init();
417+
SPI_CONTROLLER_Chip_Select_Low();
418+
SPI_CONTROLLER_Write_One_Byte(0x06);
419+
SPI_CONTROLLER_Chip_Select_High();
420+
usleep(1);
421+
422+
SPI_CONTROLLER_Chip_Select_Low();
423+
SPI_CONTROLLER_Write_One_Byte(0x50);
424+
SPI_CONTROLLER_Chip_Select_High();
425+
usleep(1);
426+
427+
SPI_CONTROLLER_Chip_Select_Low();
428+
SPI_CONTROLLER_Write_One_Byte(0x31);
429+
SPI_CONTROLLER_Write_One_Byte(r1);
430+
SPI_CONTROLLER_Chip_Select_High();
431+
usleep(1);
432+
433+
SPI_CONTROLLER_Chip_Select_Low();
434+
SPI_CONTROLLER_Write_One_Byte(0x04);
435+
SPI_CONTROLLER_Chip_Select_High();
436+
usleep(1);
437+
438+
//Close the CH341a device
439+
ch341a_spi_shutdown();
440+
}
441+
386442
//Writing status register 2
387443
if (numOfRegisters > 1)
388444
{

0 commit comments

Comments
 (0)