Digitally Configurable Audio Routing Patchbay
DCARP System Software PresentationAaron Cramer
Western Washington University2009
General System Design
MCU: Cypress PSoC CY8C21001Bus Frequency: 24MHzMemory Requirements:
ROM ~ 7.2 KB User Data Storage: save up to 50 routing
configurations64Bytes/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 blockso 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 StatePrompts user for source and
destination channelsValidates ChannelsCalls function to update
current configuration and program crosspoint
State Description
Save StatePrompts user for
configuration numberValidates configuration
numberCalls function to store
current configuration data in flash
State Description
Recall StatePrompts user for
configuration numberValidates configuration
numberCalls 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
Module Functions DataMain.c Main(), ErrHandler() INT8U CurrentConfigArray[][],
INT8U SourceCh, INT8U DestCh, INT8U ConfigNum
SnsKeypad.c DynamicSensorScan(), DynamicBaselineInit(), GetAudioCh(), GetSelectedFnc(), GetConfigNum(), GetValidSensor()
Route.c ProgramCrosspointArray(), RouteAudio(),
ConfigData.c SaveConfig(), RecallConfig() INT8U NewConfig[][]
Cypress Modules
APIs
CapSense CSD CSD_Start(), CSD_ScanSensor(), CSD_UpdateSensorBaseline(), CSD_bIsSensorActive(), CSD_SetRefValue(),
SPI Master SPIM_Start(), SPIM_SendTxData(), SPIM_bReadStatus()
LCD LCD_Start(), LCD_PrString()
E2PROM E2PROM_Start(), E2PROM_bE2Read(), E2PROM_bE2Write()
Dataflow Diagrams
Main.c SnsKeypad.c
MAIN STATE
GetSelectedFnc()
INT8U function
ROUTE STATE
GetAudioCh()
GetConfigNum()
SAVE STATE
RECALL STATE
INT8U *ErrCodeINT8U 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.c Route.c
ROUTE STATE
RouteAudio()
INT8U *SourceCh
INT8U *Destination
ProgramCrosspointArray()
RECALL STATE
*CurrentConfigArray[][]
SPI
*CurrentConfigArray[][]
Dataflow Diagrams
SAVE STATE INT8U
*CurrentConfigArray[][]
SaveConfig()
Main.c ConfigData.c
Flash
INT8U *confignum
RECALL STATE INT8U newconfig[][]
INT8U *confignum
RecallConfig()
Questions?