Wahoo! With two exams down, I have my last one this Wednesday and nearly all of my free free time (time not spent skating and revising) has gone to improving my watch. Its actually getting to the point now where I’ve got so much code that without optimisations, it doesn’t all fit on! I’m currently working under O1 optimization and the program size is ~51kB (max of 64kB). Under size optimizations (Os), I can get this down to 46kB. Regardless, I’ve been mainly developing the file reading system. After receiving a 2GB SD card in the post (I’ve not written a SDHC supporting driver yet!), I’ve managed to get the file system working and I now have the ability to display HPX (my simple picture format) and TXT files with the ability to view HGP files too soon (my GPS co-ordinate format).
File viewer program displaying the files on my SD card
Can’t forget the torch! Flash mode supported too.
The image viewer menu.
Note, you can view any 128×160 section of the image on the screen at once and once in picture viewing mode, you can move around the picture using the up and down buttons with the direction defined by “Up Btn Direction” and “Down Btn Direction”. The “Skip Size” parameter defines how many pixels are skipped with each button press
Work and revision are ever continuing but as I’ve pretty much saturated the code space of this watch already, surprise surprise! A new watch is in development. I’ve never really been too keen on soldering LQFP packages but I think its time I learn how to because if I want more power and space, I’m going to have to upgrade to larger packages! The newly designed watch is essentially the same size (1x1mm added in total) except the navigation switch has been replaced with… a touch screen! Never did I think I’d be designing a fully embedded battery powered platform with a touch screen, large enough to fit on your wrist!
The Eon 6 will be based on the STM32F405, a processor I’ve used for all my “high powered” prototyping supporting a maximum speed of 168MHz, 1Mb of code space and 192kB of SRAM. Obviously, the problem here is battery life. On such a powerful platform, I won’t be able to achieve anywhere near the previous level of battery life predicted with the STM32F051K8/STM32L051 (Cortex M0+ core) so I’m probably going to be joining the current smart watch fad with a battery life of around 1 day. I will however be including a 23LC1024 SRAM chip for all the storage that I could ever want, along with the standard ol’ SD card. Having this extra nugget of RAM should allow me to decode PNG, JPEG and BMP on the fly!
As I’m using a much larger chip package, the SD card and SPI SRAM both are using seperate SPI busses meaning I should be able to shift data between the two pretty fast (the STM32F405 supports SPI of 168MHz/(2*2) = 42MHz! The SRAM however only supports a maximum speed of 42MHz. Do I smell overclocked SRAM…?). The LCD is also now accessed through a parallel bus allowing for massive frame rates. The touch screen also has a dedicated resistive touch screen controller allowing the system to operate in stop mode until an external interrupt is present to wake it up. Both the torch LED and backlight LED also include their own drive transistors – a mistake I made with the previous revision in not being able to sink enough current!
Fortunately, since the platform size hasn’t changed, the antenna tuning parameters should be pretty much the same (antenna ground plane size should be similar) so once I get round to tuning the antenna (Thursday!), I should be able to keep the component values across each board. I could’ve actually used the dedicated SDIO peripheral in the STM32F405 for the SD card but since I’ve already for the SD card library and FATFS integration sorted, I thought it a bit of a chore to change. I’m not considering streaming any form of data from the SD card at any significant speed so it shouldn’t be too much of a problem.
Keep tuned for more updates!