Showing posts with label PSoC3. Show all posts
Showing posts with label PSoC3. Show all posts

Wednesday, March 6, 2013

PSoC3/5 Hardware options

After a great semester,I'm back to the blog,with lots to post.

What is the PSoC 3?
I'll keep the answer tweet-length,
Cypress Semi-Ultra low power-Single cycle 67Mhz 8051-Programmable Digital blocks-Extremely powerful analog signal processing-max 62 GPIOs (TQFP).

Its available in QFN,SSOP and TQFP packages.See more about PSoC3 parts here.

It has 2 cousins(at the time of writing this article,PSoC4 hasnt come out.),PSoC1,with an M8C core and the PSoC5,which is an ARM Cortex M0 based device.

Software
To get started with PSoC,you need PSoC Creator 2.2 (latest when this was written).Its a ~500MB download,which you can get from Cypress Semiconductors website -> http://www.cypress.com/?id=2494

That download has the IDE,as well as the programming software and drivers,all in one easy to install package.

Sorry,the software isnt for OSX or Linux,only Windows XP onwards.

Hardware
You have quite a few options here.I'll cover the company kits first.See all the company's offered boards here
 
PSoC3 Starter Kit - CY8CKIT - 003 for $49.
It has the most powerful PSoC3 chip,the CY8C3866AXI-040,an Accelerometer, a Thermistor, Proximity Sensing, a CapSense® touch-sensing interface, a 12-pin wireless module header, and even 28 general purpose I/O pins (GPIOs).

I'd not advise you to go for this one,since its not very user friendly and in my opinion,not that suited for getting started with PSoC3.Just my opinion.

The kit you should go for,is this one right here - PSoC3 DVK or the CY8CKIT - 030.It will cost you $99,but its the best kit the company sells,in my opinion.This board has everything you'd want on your PSoC3 board,and very user-friendly and high performance.

I have been using it for almost 2 years now,and I dont have a single complaint.Everything is just perfect.Kudos to the team at Cypress Semiconductors behind this one.Highly recommended.

Theres another 'mega-kit' of sorts called the CY8CKIT-001,which can support PSoC1,3 and 5.But its only for people who need tons of GPIOs,and can pay a steep USD 250.I have used it,but dont recommend it for people starting with PSoC.The best one is still the 030.

--

Now if youre not the off-the-shelf types,and want to make your own hardware,then here are your options:

The QuickPSoC3: This is a board I made,which I could customize and etch using toner transfer,to get a working PSoC3 board in under an hour,on the cheap.

Its open source hardware(CC-BY-SA3.0),so feel free to download and modify the files to suit your needs.
Read more about it and Download CAD files here.


The EzPSoC3 : I made this board an year ago,fed up with pricey company kits and archaic lab rules at my university.Its a sweet minimalist PSoC3 board,with USB support and more.Its open source,and licensed CC-BY-SA3.0
I am not selling this as a kit/barePCB as of now.You could download the CAD files(Eagle 6), and forward them to your fav PCB house for a low cost and easy to use PSoC3 board :)
Download CAD files here.


The EzPSoC3(zeta's mod) has a few variants too,one made by zeta over at the Cypress Developer forums,and its CAD files made in EAGLE are linked here.


Theres the freeSoC,another open source (PSoC5 though) board thats backed by a very successful kickstarter campaign.Check it out here.

    and it has a mini version too :)



 


     Great work Jon Moeller!










Theres one called Loki,a very feature rich arduinoesque PSoC3-5(the QFN package is pin compatible) board in development by nickjohnson.You could read and follow his development over at the DangerousPrototypes thread hes updating.






Theres also a few by Gadgetfactory.net (makers of the famous Papilio FPGA platform and the Open bench logic sniffer ) Heres a pic of their smaller board,nicknamed Dragonfly,coming soon!







There are a few PSoC3 board designs by japanese hobbyists and vendors too.You could check those out here  -
aasoukai128's board ,
ITCorp24's PSoC boards (not opensource.)


There are quite a few other boards in the wild,I'll add more as I spot em.


Tuesday, February 26, 2013

Interfacing a Nokia 1110 LCD to the PSoC3

UPDATE  6-Mar-13: The LCD mysteriously stopped working and the backlight also doesnt work anymore.I tried to *gently* pry the backlight PCB from the screen,but ended up damaging the flex cable in between.Arrgh.So thats useless now.

I'm going to try and write & document my work more often from now on.Anyway,getting on with the post,

So the idea here is to develop a custom component for a Nokia 1110 LCD I purchased recently.

As for the hardware,I planned to etch a breakout board,but the fine pitched connector leads stalled execution.

The software part,is basically a form of 9bit SPI.Now,I could use the SPIM component in PSoC Creator,but I'll take this chance to write a custom component where the 9bit shifting will be done via a small verilog module.(If you have a PSoC3/5,and you bitbang,you have sinned.So no bitbang.)

After some googling,I think the LCD I have is 96x65,and uses the PCF8814[pdf datasheet] controller,which does support I2C,but when used with these LCDs,does not have those pins broken out)

Also,theres the whole issue of a backlight,but I'll look into designing the backlight driver later.

I'll start by wiring up the LCD to my trusty PSoC board,according to the pinout below:

PinFunction
1VCC
2#RESET
3DATA
4CLK
5#CS
6VCC
7NC
8GND
9VLED-
10VLED+
 With that done,I'll maybe test it by running some init routines,and then detail that effort in Part-2 of this post. :)

PS:I'm not entirely sure if I have the 1110 LCD or the 3310 LCD.I'll try some code and let you guys know.

Friday, September 21, 2012

Playing with a Nokia LCD

I bagged this Nokia LCD off the local mobile repair street,for just Rs.80.Its an old style 84x48 monochrome display with the PCD8544 controller( I think..).

I'll etch a breakout board and update this thread with my progress.Here are some pics till then:


3.5x2.5cm of graphic goodness!
These are going to be tricky to solder . . .

ENC28J60 - PSoC3 - Part 5 ICMP(ping)

So now that we know how packets will be actually sent(and received) with the ENC28J60,all we need to do now is build code on top of that,which creates and processes the packets to send(or receive).

We looked at ARP last time,so its Ping for this post.
The ping is the second most basic routine for any network device.You could say,that if a device replies to a Ping request,then its active.I wont go into the history and such,and will skip directly to the need-to-know stuff of things with implementing this.

So,why is Ping important to us,in this case? Well,its not really essential to our basic goal of an embedded webserver(or webclient).But,if youre building a network connected device,its convention that it should be able to answer to Pings(technically speaking,ICMP Echo Requests.) and ARP requests etc.Ping gives us an easy way to test if our chip is active on the network.

Our main focus then is to reply to ping requests.So,heres what a Ping Request might look like.

The layout of a ICMP packet


It will have an  Ethernet header(like ARP did.),then an IP(Internet protocol) header and the actual ICMP header part,(shown in pink above).

Heres what those structs look like for us.

Note that the IPhdr has an eth header inside it,so we'll use the '->' to access that level in the struct,since we'll be dealing with pointers to the structs.

We'll look into what we need to do to reply to a ping.So,when pinged from the connected computer(or any network equipment) our ENC28J60 should reply back.

What that means for us,is basically we'll get a packet in the ENC's buffer,in the above format.All we'll need to do is edit some fields,and we have a reply ready :-) So we dont really create the packet here,we just edit it.

So heres what we can start with,in our PingReply function


Swapping the MAC addresses is the first thing we need to do.We'll swap the IP Address fields in the IP header next.


The next important bit,is the checksum.I'll explain a little on how that works.Its basically a sum of the IP header taken in chunks of 16bits,and complemented.So,a series of 16 bit words,added up,and complemented(1s compliment) in the end.This is a very common function,and theres tons of documentation around this.I suggest you google that up.

With the checksum calculated,its ready to be sent :-)


So,when pinged,the PSoC will edit the packet it receives,and send it right back as a reply.Simple enough? It is.
Here,192.168.1.153 is our ENC28J60,and 192.168.1.120 is my laptop.I know the ping times are high,but this isnt a bare ping application.Its doing a lot of other stuff,and clocked at only 24Mhz,so delay is expected.


Hooray! Its alive :-)

As usual,all the code is available on my github repo.Thats all for this post.