Forum: Mikrocontroller und Digitale Elektronik PIC32MX - SPI Problem


von Lutz K. (_lk_)


Lesenswert?

Hallo,

ich benötige bei einem AD-Wandler eine aktive Frame-Zeit von 16 
SCK-Takten. Die inaktive Zeit soll uneingeschränkt sein, also beliebig 
lang. Die /SSx-Leitung gibt mir aber nur einen Impuls von nur einer 
Taktlänge. Ist es möglich diese Länge auf 16 Takte zu verlängern? 
Funktioniert das nicht mit der Einstellung "MODE16"?

Benötigte Einstellung des Wandlers:
SPI Master, Frame Master, 16Bit, Taktpolarität Low, Frame-Polarität 
aktiv Low.


Zeitdiagramm der Signale, welche der Wandler benötigt:

     Inaktive Zeit    Aktive Zeit von genau 16 SCK-Takten
/SSx -------------________________________________----

SDI  xxxxxxxxxxxxx__--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

SCK  -------------_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-----

SDO  ____________--__--__--__--__--__--__--__--_____



Freundliche Grüße
LK
von Arc N. (arc)


Lesenswert?

Lutz Kalle schrieb:
> Hallo,
>
> ich benötige bei einem AD-Wandler eine aktive Frame-Zeit von 16
> SCK-Takten. Die inaktive Zeit soll uneingeschränkt sein, also beliebig
> lang. Die /SSx-Leitung gibt mir aber nur einen Impuls von nur einer
> Taktlänge. Ist es möglich diese Länge auf 16 Takte zu verlängern?
> Funktioniert das nicht mit der Einstellung "MODE16"?
>
> Benötigte Einstellung des Wandlers:
> SPI Master, Frame Master, 16Bit, Taktpolarität Low, Frame-Polarität
> aktiv Low.
>

http://ww1.microchip.com/downloads/en/DeviceDoc/DS-61106F.pdf
"The control bit FRMSYPW (SPIxCON<27>) can be set to configure the width 
of the frame synchronization pulse to one character wide.
Note: The FRMSYPW bit is not available on all devices. Refer to the 
specific device data sheet for details."
Die PIC32MX1xx und 2xx, 5xx, 6xx, 7xx haben das, die 3xx und 4xx nicht.
von Michael H. (morph1)


Lesenswert?

Slave select macht man mit einem normalen Port-Pin, den macht nicht das 
SPI-Modul. Folglich geht das ganz ganz einfach
von Arc N. (arc)


Lesenswert?

Michael H. schrieb:
> Slave select macht man mit einem normalen Port-Pin, den macht nicht das
> SPI-Modul.

Bessere SPI-Module können das autom. inkl. Delays vor und nach dem 
Beginn eines Transfer (z.B. Renesas RX62)

> Folglich geht das ganz ganz einfach

Andererseits ist FRMSYPW zusammen mit FRMSYNC zu dem was der TO machen 
möchte verwendbar.
"FRMSYNC: Frame Sync Pulse Direction Control on SSx pin bit (Framed SPI 
mode only)
1 = Frame sync pulse input (Slave mode)
0 = Frame sync pulse output (Master mode)"
"FRMSYPW: Frame Sync Pulse Width bit(4)
1 = Frame sync pulse is one character wide
0 = Frame sync pulse is one clock wide"
von Lutz K. (_lk_)


Lesenswert?

Ersteinmal vielen Dank für eure schnelle Hilfe.

Das würde bedeuten, daß ich die /SSx-Leitung als Port definiere und die 
Select-Timings selber verwalte. Denn ich muß 16 Bit vom AD-Wandler 
empfangen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.