CyU3PReturnStatus_t NuandLockOtp() { CyU3PReturnStatus_t status = CY_U3P_SUCCESS; uint8_t location[1]; uint8_t read_status; status = FlashReadStatus(&read_status); location[0] = 0x06; /* Write enable. */ status = CyU3PSpiSetSsnLine (CyFalse); status = CyU3PSpiTransmitWords (location, 1); status = CyU3PSpiSetSsnLine (CyTrue); status = FlashReadStatus(&read_status); location[0] = 0x2f;// WRSCUR status = CyU3PSpiSetSsnLine (CyFalse); status = CyU3PSpiTransmitWords (location, 1); status = CyU3PSpiSetSsnLine (CyTrue); location[0] = 0x02;// Page program status = CyU3PSpiSetSsnLine (CyFalse); status = CyU3PSpiTransmitWords (location, 1); status = CyU3PSpiSetSsnLine (CyTrue); location[0] = 0x2b; /* RDSCUR */ status = CyU3PSpiSetSsnLine (CyFalse); status = CyU3PSpiTransmitWords (location, 1); status = CyU3PSpiReceiveWords(location, 1); status = CyU3PSpiSetSsnLine (CyTrue); return status; }
static CyU3PReturnStatus_t FlashReadStatus(uint8_t *val) { int status; uint8_t read_status = 0x05; /* RDSTATUS */ status = CyU3PSpiSetSsnLine (CyFalse); status = CyU3PSpiTransmitWords (&read_status, 1); status = CyU3PSpiReceiveWords(val, 1); status = CyU3PSpiSetSsnLine (CyTrue); return status; }
CyU3PReturnStatus_t NuandExso() { CyU3PReturnStatus_t status = CY_U3P_SUCCESS; uint8_t location[1]; location[0] = 0xc1; // EXSO status = CyU3PSpiSetSsnLine (CyFalse); status = CyU3PSpiTransmitWords (location, 1); status = CyU3PSpiSetSsnLine (CyTrue); return status; }
static void step(int direction) { const uint8_t full_fwd_step[] = { //0355, 0345, 0344, 0354 // low 0333, 0332, 0322, 0323 // medium //0311, 0301, 0300, 0310, // high }; s_index += direction; if (s_index < 0) { s_index = sizeof(full_fwd_step) - 1; } else if (s_index >= sizeof(full_fwd_step)) { s_index = 0; } CyU3PSpiTransmitWords((uint8_t *)&full_fwd_step[s_index], 1); CyU3PThreadSleep(10); }