hallo arbeite mich gerade ind den 32 bit Controller ein. Habe den FM3 Sapnsion MB9B520/524 Controller. Die FM3 haben Multifunkions Register. "EPFR" oder "PFR0" usw . Finde keine Beschreibung der Register. Wo finde ich sowas,oder gibt es ein Software Programm für Win ? Finde natürlich sehr viel .. Franz
https://www.spansion.com/products/microcontrollers/32-bit-arm-core/fm3/Pages/MB9BF524KPMC-G-JNE2.aspx#inpageTabs=1 Unter Hardware Manual gibts genug Lesestoff. Ist da nichts dabei? - FM3 PERIPHERAL MANUAL
Ja schon gesehen aber versehen.. Versuche Usart 3 in gange zu bringen. Habe hier ein Board von Glyn mit FTDI Display. Wenn da jemand was hat ..?
void InitUart0(void)
{
FM3_GPIO->ADE = 0x00FF;
// Initialize ports for UART0
FM3_GPIO->PFR2 |= (1 << 0x01) | (1 << 0x02); // P21->SIN0_0,
P22->SOT0_0
FM3_GPIO->EPFR07 |= (1 << 6); // Use SIN0_0, SOT0_0
// Initialize UART asynchronous mode
FM3_MFS0_UART->SCR = 0x80; // UART reset
FM3_MFS0_UART->SMR = 0x01; // serial data output enable, operation
mode 0
FM3_MFS0_UART->SSR = 0x00; // 0x80 = clear receive error flag
FM3_MFS0_UART->ESCR = 0x00;
FM3_MFS0_UART->BGR = (36000000 / 115200 - 1); // 115.2kbaud
FM3_MFS0_UART->SCR |= 0x03; // RX, TX enable
}
/**
************************************************************************
******
** \brief Main function of project for MB9B520M series.
**
** \param none
** \return uint32_t return value, if needed
************************************************************************
******/
void PutCharUart0(uint8_t u8Char)
{
while (!(FM3_MFS0_UART->SSR & (1 << 1))); // wait for transmit
buffer empty
FM3_MFS0_UART->TDR = u8Char; // put u8Char into buffer
if ('\n' == u8Char)
{
while (!(FM3_MFS0_UART->SSR & (1 << 1))); // wait for transmit
buffer empty
FM3_MFS0_UART->TDR = '\r'; // put '\r' into buffer
}
}
Gerade hier habe ich noch Probleme.
ADE sind die Analogen Ports ?
PFR2 ??? wie ist hier die zuordnung zu den Port Pins ?
EPFR07 ???
FM3_GPIO->ADE = 0x00FF;
// Initialize ports for UART0
FM3_GPIO->PFR2 |= (1 << 0x01) | (1 << 0x02); // P21->SIN0_0,
P22->SOT0_0
FM3_GPIO->EPFR07 |= (1 << 6);
- FM3 PERIPHERAL MANUAL 4.6 Analog Input Setting Register (ADE) This register sets analog input pins from AN31 to AN00. Bit == 0 - digital 4.1. Port Function Setting Register (PFRx) List of PFR Register Configuration PFR2 = P2F to P20 - MB9B520M series, Datasheet P21== SIN0_0 INT06_1 WKUP2 BIN1_1 AN14 Ich arbeite nicht mit dem Board. Aber ich hoffe, dies hilft dir bei den Dokumenten.
OK Besten dank P21== SIN0_0 INT06_1 WKUP2 BIN1_1 AN14 Wie setzte ich den PortPin dann auf die verschiede Modis ? Nur durch das Ansprechen der Adressen ?
Franz S. schrieb: > Wie setzte ich den PortPin dann auf die verschiede Modis ? Franz S. schrieb: > FM3_GPIO->EPFR07 |= (1 << 6); // Use SIN0_0, SOT0_0 - FM3 PERIPHERAL MANUAL 4.15. Extended Pin Function Setting Register 07 (EPFR07) Bit 6/7 SOT0B [bit7:6] SOT0B: SOT0 Input/Output Select bits Selects input/output for SOT0. Du gehst bei deinem Code von einem Initvalue von 0b00 aus. (Schlechte Idee) D.h. der Befehl oben erzeugt 0b01 Uses SOT0_0 at the input pin of MFS ch.0 SOT. Uses SOT0_0 at the output pin Aufgrund des obigen Kommentares gehe ich auch davon aus, dass SIN0S auf default angenommen wird. [bit5:4] SIN0S: SIN0 Input Select bits Selects input for SIN0 0b00 Uses SIN0_0 at the input pin of MFS ch.0 SIN. [Initial value]
Ok Besten Dank Muss ich erst mal lesen. Hab ich schon mal einen Anfang.
Hi Franz, hab auch das selbe Board von Glyn (ADAM43-LCN-WQ-EDT-FM3). Ich hab mit folgenden Code die UART3 Schnittstelle zum laufen bekommen.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
Hast du schon was mit dem internen Work Flash gemacht? Die automatischen Schreiberoutinen die in den AN angesprochen werden funktionieren nur bedingt bei mir. Nach dem löschen eines Sektors im Work Flash Bereich springt der Programmcounter plötzlich auf die Adresse 0xFFFFFFFE und der Controller macht nichts mehr. Die selben Routinen funktionieren aber für den Main Flash Bereich ohne Probleme. Setze ich einen Breakpoint direkt nach dem letzten Befehl der automatischen Löschroutinen funktioniert das löschen auch im Work Flash Bereich. Würde mich mal interessieren ob das einer hier schon zum laufen bekommen hat. Oder ob jemand die selben Probleme hat. AN zu finden unter https://www.spansion.com/downloads/MB9AB40N_MN706-00019-E.pdf (Type 9). Lg Sven
Moin Sven Dann hast du auch das Prozessor Board "EVBmB9B520EVE_V1.0 ? //Work Flash So tief bin ich noch nicht drinn. Besten Dank für den Source. Benutzt du die USB Port's ? Gruss Franz
Moin Franz, nein genau das selbe Board hab ich nicht aber ein ähnliches. Bei mir ist der Controller (MB9BF524K) und der EVE Chip (FT801) auf der selben Platine und mit dem Display verklebt. Die genaue Bezeichnung des Boards ist: ADAM43-LCN-WQ-EDT-FM3 Info im Netz unter: http://www.glyn.de/data/glyn/media/doc/ADAM43-LCN-WQ-EDT-FM3.pdf Das Board hat nur eine USB Buchse für Spannungsversorgung und zum Programmieren. Daher kann ich nichts zu der USB Schnittstelle sagen. Mfg Sven
Habe das EVBMB9B520EVE da ist aber auch der 524 drauf aber mit einem EVE800 Das Board hat CAN I2C JTAG Das FTDI Board ist am Display verklebt. Schaue ich mal ob ich deine Routinen zu laufen bringe. Habe auch noch ein 7" Display mit ein Prozessorboard hier liegen . Gruss
Hallo
Habe diese Routine ,aber läuft nicht.
Sollte eigendlich auf PIN 27 was senden.
??
void InitUart1(void)
{
FM3_GPIO->ADE = 0x00FF;// Ad -Wandler
// Initialize ports for UART0
FM3_GPIO->PFR1 |= 0x000E; // P11->SIN1_1, P12->SOT1_1,
P13->SCK1_1
FM3_GPIO->EPFR07 |= 0x0000A800; // Use SIN1_1, SOT1_1, SCK1_1
// Initialize UART asynchronous mode
FM3_MFS1_UART->SCR = 0x80; // UART reset
FM3_MFS1_UART->SMR = 0x01; // serial data output enable, operation
mode 0
FM3_MFS1_UART->SSR = 0x00; // 0x80 = clear receive error flag
FM3_MFS1_UART->ESCR = 0x00;
// FM3_MFS1_UART->BGR = (36000000 / 115200 - 1); // 115.2kbaud
FM3_MFS1_UART->BGR = (36000000 / 9600 - 1); // 115.2kbaud
FM3_MFS1_UART->SCR |= 0x03; // RX, TX enable
}
/***********************************************************************
******
* DESCRIPTION: sends a single character (no timeout!)
*
* PARAMETERS: Character
*
* RETURNS: None
************************************************************************
*****/
void PutCharUart1(uint8_t u8Char)
{
while (!(FM3_MFS1_UART->SSR & (1 << 1))); // wait for transmit
buffer empty
FM3_MFS1_UART->TDR = u8Char; // put u8Char into buffer
if ('\n' == u8Char)
{
while (!(FM3_MFS1_UART->SSR & (1 << 1))); // wait for transmit
buffer empty
FM3_MFS1_UART->TDR = '\r'; // put '\r' into buffer
}
}
/***********************************************************************
******
* DESCRIPTION: sends a complete string (0-terminated)
*
* PARAMETERS: Pointer to (constant) file of bytes in mem
*
* RETURNS: None
************************************************************************
*****/
void PutStringUart1(uint8_t *pu8Buffer)
{
while (*pu8Buffer != '\0')
{
PutCharUart1(*pu8Buffer++); // send every char of string
}
}
/***********************************************************************
******
* DESCRIPTION: returns incoming character, if received
*
* PARAMETERS: None
*
* RETURNS: Character or 0xFF (Error) or 0 (Nothing)
************************************************************************
*****/
uint8_t GetCharUart1(void)
{
uint8_t u8Char;
if ((FM3_MFS1_UART->SSR & 0x38) != 0) // Check for errors PE, ORE,
FRE
{
FM3_MFS1_UART->SSR |= (1 << 7); // Clear error flags
u8Char = FM3_MFS1_UART->RDR; // Flush RDR
return 0xFF;
}
else if (FM3_MFS1_UART->SSR & 0x04) // RDRF?
{
u8Char = FM3_MFS1_UART->RDR;
if ('\r' == u8Char)
{
u8Char = '\n';
}
return (u8Char);
}
else
{
return 0;
}
}
Hallo Usart3 läuft mit Interrupt Empfang. Nur die Pins sind nicht auf dem Stiftstecker Port. Nun die Frage Alles auf Usart 1 umstellen sollte doch auch gehen. Usart 0 wird für das Jtag System verwendet. Gruss Franz
Gast
#4391320
Hier war das Problem . FM3_GPIO->ADE = 0x0000;// Ad -Wandler FM3_GPIO->PFR1 |= 0x000E; // P11->SIN1_1, P12->SOT1_1, P13->SCK1_1 FM3_GPIO-> EPFR07 |= (1 << 11) | (1<<13); // Use SIN1_1, SOT1_1 no CLK
Gast
#4577646
Hast Du gesehen, dass es eine Seite gibt, die UART Beispiele für alle FM MCUs anbietet? www.io-expert.com/fm_examples/index.shtml leider sind da nicht so viele Beispiele drauf, aber was mit UART. Vielleicht kommt ja noch mehr.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.