void dial_num(uint8 *p, uint8 num) { uint8 i; init_dial(); enable_cs(); for(i = 0; i < num; i++) put_9200a(p[i]); put_9200a(0xFF); //stop code disable_cs(); }
/******************************************************************************* Function: FlashPageProgram( ST_uint32 udAddr, ST_uint8 *pArray, ST_uint32 udNrOfElementsInArray) Arguments: udAddr, start address to write to pArray, buffer to hold the elements to be programmed udNrOfElementsInArray, number of elements to be programmed, counted in bytes Return Value: Flash_AddressInvalid Flash_OperationOngoing Flash_OperationTimeOut Flash_Success Description: This function writes a maximum of 256 bytes of data into the memory by sending an SPI_FLASH_INS_PP Instruction. by design, the PP Instruction is effective WITHIN ONE page,i.e. 0xXX00 - 0xXXff. when 0xXXff is reached, the address rolls over to 0xXX00 automatically. Note: This function does not check whether the target memory area is in a Software Protection Mode(SPM) or Hardware Protection Mode(HPM), in which case the PP Instruction will be ignored. The function assumes that the target memory area has previously been unprotected at both the hardware and software levels. To unprotect the memory, please call FlashWriteStatusRegister(ST_uint8 ucStatusRegister), and refer to the datasheet for the setup of a proper ucStatusRegister value. Pseudo Code: Step 1: Validate address input Step 2: Check whether any previous Write, Program or Erase cycle is on going Step 3: Disable Write protection (the Flash memory will automatically enable it again after the execution of the Instruction) Step 4: Initialize the data (Instruction & address only) packet to be sent serially Step 5: Send the packet (Instruction & address only) serially Step 6: Initialize the data (data to be programmed) packet to be sent serially Step 7: Send the packet (data to be programmed) serially Step 8: Wait until the operation completes or a timeout occurs. *******************************************************************************/ ReturnType FlashPageProgram( uAddrType udAddr, ST_uint8 *pArray , ST_uint16 udNrOfElementsInArray) { CharStream char_stream_send; ST_uint8 pIns_Addr[4]; // Step 1: Validate address input if(!(udAddr < FLASH_SIZE)) return Flash_AddressInvalid; // Step 2: Check whether any previous Write, Program or Erase cycle is on-going if(IsFlashBusy()) return Flash_OperationOngoing; // Step 3: Disable Write protection FlashWriteEnable(); // Step 4: Initialize the data (Instruction & address only) packet to be sent serially char_stream_send.length = 4; char_stream_send.pChar = pIns_Addr; pIns_Addr[0] = SPI_FLASH_INS_PP; pIns_Addr[1] = udAddr>>16; pIns_Addr[2] = udAddr>>8; pIns_Addr[3] = udAddr; // Step 5: Send the packet (Instruction & address only) serially enable_cs(); Serialize_nf(&char_stream_send, ptrNull, enumEnableTransOnly_SelectSlave, enumNull ); // Step 6: Initialize the data (data to be programmed) packet to be sent serially char_stream_send.length = udNrOfElementsInArray; char_stream_send.pChar = pArray; // Step 7: Send the packet (data to be programmed) serially Serialize_nf(&char_stream_send, ptrNull, enumNull, enumDisableTransOnly_DeSelectSlave ); disable_cs(); // Step 8: Wait until the operation completes or a timeout occurs. WAIT_TILL_Instruction_EXECUTION_COMPLETE(1) return Flash_Success; }