Digitally Configurable Audio Routing Patchbay DCARP System Software Presentation Aaron Cramer Western Washington University 2009
General System Design MCU: Cypress PSoC CY8C21001 Bus Frequency: 24MHz Memory Requirements: ROM ~ 7.2 KB User Data Storage: save up to 50 routing configurations 64Bytes/Configurations * 50 Configurations = 3.2 KB Program Storage: ~ 4.0 KB RAM ~ 450 Bytes Copy 64Byte blocks from Flash Miscellaneous variables, user module data, etc. PSoC Resources Used: o CSD: 3 digital blocks, 3 analog blocks o SPI: 1 digital block
State Machine Design System State Machine : MAIN ROUTE SAVE RECALL
State Description Prompts user to Route, Save, or Recall Endless loop monitors keypad for function sensor press, ignores all other input Main State
Route State Prompts user for source and destination channels Validates Channels Calls function to update current configuration and program crosspoint State Description
Save State Prompts user for configuration number Validates configuration number Calls function to store current configuration data in flash State Description
Recall State Prompts user for configuration number Validates configuration number Calls function to retrieve data from flash and program crosspoint State Description
CPU Load CPU Load: 100% Sensor polling loops and blocking routines used CPU is always doing something
Module Description ModuleFunctionsData Main.cMain(), ErrHandler()INT8U CurrentConfigArray[][], INT8U SourceCh, INT8U DestCh, INT8U ConfigNum SnsKeypad.cDynamicSensorScan(), DynamicBaselineInit(), GetAudioCh(), GetSelectedFnc(), GetConfigNum(), GetValidSensor() Route.cProgramCrosspointArray(), RouteAudio(), ConfigData.cSaveConfig(), RecallConfig()INT8U NewConfig[][] Cypress ModulesAPIs CapSense CSDCSD_Start(), CSD_ScanSensor(), CSD_UpdateSensorBaseline(), CSD_bIsSensorActive(), CSD_SetRefValue(), SPI MasterSPIM_Start(), SPIM_SendTxData(), SPIM_bReadStatus() LCDLCD_Start(), LCD_PrString() E2PROME2PROM_Start(), E2PROM_bE2Read(), E2PROM_bE2Write()
Dataflow Diagrams Main.cSnsKeypad.c MAIN STATEGetSelectedFnc() INT8U function ROUTE STATE GetAudioCh() GetConfigNum() SAVE STATE RECALL STATE INT8U *ErrCode INT8U channel INT8U *ErrCode INT8U config Capacitive Sensor Keypad Sensor 0 Sensor 1 Sensor 2 Sensor 3 Sensor 4 Sensor 5 Sensor 6 Sensor 7 Sensor 8 Sensor 9 Sensor 10 Sensor 11 Sensor 12
Dataflow Diagrams Main.cRoute.c ROUTE STATE RouteAudio() INT8U *SourceCh INT8U *Destination ProgramCrosspointArray() RECALL STATE *CurrentConfigArray[][] SPI *CurrentConfigArray[][]
Dataflow Diagrams SAVE STATE INT8U *CurrentConfigArray[][] SaveConfig() Main.cConfigData.cFlash INT8U *confignum RECALL STATE INT8U newconfig[][] INT8U *confignum RecallConfig()
Questions?