Gast
#4634803
Hi wir haben einen Chip, nennen wir ihn einmal ESP8266. Diesen haben wir konfiguriert für HW SPI nutzen aber unseren eigenen GPIO für den Chip Select, da wir die Transaction selber steuern wollen und eine einzige SPI_SEND_BYTE Function haben wollen, die bei einem Dummy Byte auch ein DataByte lesen kann. CPOL:0 ( clock ist low, wenn inactive ) Einen Chip Select stellen wir dem SPI_SEND_BYTE mit einem GPIO(5,LOW) voran leiten dann ein SPI_SEND_BYTE(0xFF) ein und jagen nochmals ein SPI_SEND_BYTE(0xFF) hinterher. Nun stellen wir unseren Chip Select wieder auf high. Das Resultat ist links zu sehen. Frage a) Ist das normal? Nun haben wir einen kleinen delay eingebaut, der im Bild rechts zu sehen ist. Frage b) Ist das Stand der Technik? Uns ist aufgefallen, dass bei CPHA: 1 ( data valid on clock trailing edge ) das letzte Datenbit genau auf der Kante liegt und im Falle eines gesendeten 0xFF nur 0xFE gesendet wird. ( siehe Bild ) Kann man den MOSI (herabfallendes 8.Bit ) hinausziehen oder die CLK Flanke verkürzen, sodass das letzte Bit richtig gesendet wird? Es schluckt das letze Bit förmlich in diesem Mode. Genau auf dieser Kante liegen 'sichtlich' Mosi's High und Low, der ESP entscheidet sich immer für '0' Im Gegensatz zu Arduino Mega, PIC18 oder PIC24. Gleiches vorgehen, gleicher Mode. Ein gesendetes 0xFF wird vom LogicAnalyzer auch als 0xFF erkannt, warum nicht beim ESP8266? Gibt es einen Trick? Alle gesendeten letzten Bits werden beim ESP8266 begradigt - keine einzige ungerade Zahl. Wem ist das noch aufgefallen in diesem Mode? txs
