I'm using custom code which is somewhat ported from the STM3240-G USBD-MSC example application. I also made modifications to the read/write functions to take blocks as arguments vs. bytes. I've stepped through the code and verified the CSD fields are being correctly convereted to the correct card capacity. However, when plugged into a computer (tried Win7 and XP) the 16GB card shows up as 2.83GB. I also tried with a 2GB and 4GB card and both card capacity's displayed correctly. Is there a fix somehwere I missed? Any help would be greatly appreciated.