static void defaultOnRead(struct BufferEvent* bevent, void* arg) { assert(bevent != NULL); bufferSwap(bevent->input, bevent->output); enableWrite(bevent); }
void flash25spi::clearMem() { enableWrite(); _enable->write(0); wait_us(1); _spi->write(0xc7); wait_us(1); _enable->write(1); waitForWrite(); }
void main(){ int i; uint16 data0 = 0x0000; uint16 data1 = 0x1000; uint16 data2 = 0x2000; uint16 data3 = 0x3000; uint16 data4 = 0x1000; uint16 data5 = 0x5000; uint32 address = 0x000000; uint16 blockRead[32]; uint16 blockWrite0[16]; uint16 blockWrite1[16]; uint16 blockWrite2[16]; uint16 blockWrite3[16]; uint16 blockWrite5[64]; uint16 incomingData[4]; for(i = 0 ; i < 16 ; i++){ blockWrite0[i] = data0; data0++; } for(i = 0 ; i < 16 ; i++){ blockWrite1[i] = data1; data1++; } for(i = 0 ; i < 16 ; i++){ blockWrite2[i] = data2; data2++; } for(i = 0 ; i < 16 ; i++){ blockWrite3[i] = data3; data3++; } for(i = 0 ; i < 64 ; i++){ blockWrite5[i] = data5; data5++; } trisInit(); enter_HVP(); bulkErase(); enableWrite(); flashWriteBlock(blockWrite0, blockWrite1, 1); flashWriteBlock(blockWrite2, blockWrite3, 2); flashReadBlock(blockRead, 64, 1); flashReadBlock(blockRead, 64, 2); flashWriteData(blockWrite5, 64, 0); flashReadBlock(blockRead, 64, 1); flashReadBlock(blockRead, 64, 2); exit_HVP(); while(1){} }
void MiniProgrammerUI::setFileAndTime(const QString &file, const QDateTime &time) { enableWrite(true); ui->loadBtn->setToolTip(file); QString str = time.toString(tr("h:mm:ss M.d.yyyy")); ui->filedate->setText(str); ui->filedate->setToolTip("Changed on " + str); }
void flash25spi::clearBlock(unsigned int addr) { addr &= ~(_blockSize-1); enableWrite(); _enable->write(0); wait_us(1); _spi->write(0xd8); _spi->write(HIGH(addr)); _spi->write(MID(addr)); _spi->write(LOW(addr)); wait_us(1); _enable->write(1); waitForWrite(); }
void flash25spi::clearSector(unsigned int addr) { if (_sectorSize == 0) { clearBlock(addr); return; } addr &= ~(_sectorSize-1); enableWrite(); _enable->write(0); wait_us(1); _spi->write(0x20); _spi->write(HIGH(addr)); _spi->write(MID(addr)); _spi->write(LOW(addr)); wait_us(1); _enable->write(1); waitForWrite(); }
/* * �������ݿ�д��ʱ��Transport���� * * @return �Ƿ��ɹ�, true - �ɹ�, false - ʧ�ܡ� */ bool TCPComponent::handleWriteEvent() { _lastUseTime = tbsys::CTimeUtil::getTime(); bool rc = true; if (_state == TBNET_CONNECTED) { rc = _connection->writeData(); } else if (_state == TBNET_CONNECTING) { int error = _socket->getSoError(); if (error == 0) { enableWrite(true); _connection->clearOutputBuffer(); _state = TBNET_CONNECTED; } else { TBSYS_LOG(ERROR, "���ӵ� %s ʧ��: %s(%d)", _socket->getAddr().c_str(), strerror(error), error); if (_socketEvent) { _socketEvent->removeEvent(_socket); } _socket->close(); _state = TBNET_CLOSED; } } return rc; }
usbMsgLen_t erasePage(uint8_t page) { if (page > 31) { return 0; } if (!waitForReady()) { return 0; } if (!enableWrite()) { return 0; } spiEnable(); spiReadWriteByte(SPICMD_ERASEPAGE); spiReadWriteByte(page); spiDisable(); waitWenIsCleared(); return 0; }
bool flash25spi::writePage(unsigned int startAdr, unsigned int len, const char* data) { enableWrite(); _enable->write(0); wait_us(1); _spi->write(0x02); _spi->write(HIGH(startAdr)); _spi->write(MID(startAdr)); _spi->write(LOW(startAdr)); // do real write for (unsigned int i=0;i<len;i++) { _spi->write(data[i]); } wait_us(1); // disable to start physical write _enable->write(1); waitForWrite(); return true; }
uint8_t usbFunctionWrite(uint8_t *data, uint8_t len) { uint8_t i; uint16_t startAddr; if (reading) { return 1; } if (len > writeBytesRemaining) { len = writeBytesRemaining; } if (wrote == 0) { if (!enableWrite()) { return 0; } spiEnable(); spiReadWriteByte(SPICMD_ERASEPAGE); spiReadWriteByte(currentPage); spiDisable(); // wait WEN flag is cleared and flash is ready if (!waitWenIsCleared()) { return 0; } // enable WEN flag if (!enableWrite()) { return 0; } startAddr = currentPage * 512; // start writing spiEnable(); spiReadWriteByte(SPICMD_PROGRAM); spiReadWriteByte(startAddr >> 8); spiReadWriteByte(startAddr); } for (i = 0; i < len; i++) { spiReadWriteByte(data[i]); wrote++; } writeBytesRemaining -= len; if (wrote == 512 || writeBytesRemaining == 0) { wrote = 0; spiDisable(); waitWenIsCleared(); ++currentPage; } if (writeBytesRemaining == 0) { return 1; } return 0; }