Commit Graph

334 Commits (b42dacb13daca2bc83c7c6dfdee33dca73ea062f)

Author SHA1 Message Date
bcostm 967509de53 [NUCLEO_F103RB] Add sleep 2013-12-16 09:56:00 +01:00
bcostm 956064b4bc [NUCLEO_F103RB] Add InterruptIn 2013-12-14 18:53:57 +01:00
Bogdan Marinescu da605b82a5 Merge pull request #126 from bcostm/master
[NUCLEO_F103RB] Update PWM IOs used + I2C cleanup
2013-12-13 01:29:29 -08:00
Bogdan Marinescu a164c6f498 [NUCLEO_F103RB] Allow ACK polling with I2C 2013-12-12 20:00:02 +02:00
bcostm 18136e3f09 [NUCLEO_F103RB] Update PWM IOs used + I2C cleanup 2013-12-12 15:44:21 +01:00
Bogdan Marinescu bd51e4eb73 Merge pull request #123 from bcostm/master
[NUCLEO_F103RB] Add I2C master, code cleanup, ...
2013-12-12 02:34:48 -08:00
Anders Lindvall 0c774294fb LPC4088 target fixes
- changed scatter file to keep all the code in the internal flash
- added tests for SPIFI memory usage
2013-12-12 12:29:00 +02:00
bcostm 2310b4c031 [NUCLEO_F103RB] Code cleanup 2013-12-12 10:35:04 +01:00
bcostm a129b8f8fa [NUCLEO_F103RB] Add more generic signal names for the examples. 2013-12-11 18:38:35 +01:00
bcostm 37b8acad68 [NUCLEO_F103RB] Code cleanup 2013-12-10 16:46:15 +01:00
bcostm 5ebce384b5 [NUCLEO_F103RB] Align startup files with other targets 2013-12-10 11:14:56 +01:00
bcostm d44996c26c Merge branch 'master' of https://github.com/mbedmicro/mbed 2013-12-10 10:35:26 +01:00
Bogdan Marinescu faee2bf073 [NUCLEO_F103RB] Serial interrupt fixes
- use TC flag instead of TXE for TX interrupt
- clear interrupt flags to prevent possible interrupt storm
2013-12-09 13:01:39 +02:00
Bogdan Marinescu 2b8e05e002 [NUCLEO_F103RB] Timer fixes
- the timer data structures were not properly initialized
- changed slave timer mode to external clock 1 (section 15.3.15 of the manual)
- avoid a possible race condition when concatenating the values of the
  two 16-bit timers
2013-12-07 14:26:54 +02:00
bcostm 0aa8b93e26 NUCLEO_F103RB: Add I2C master api 2013-12-04 11:17:10 +01:00
Bogdan Marinescu 3f82e7fa6f Use correct scatter file for LPC4088 2013-12-03 11:04:37 +02:00
Bogdan Marinescu 49df530ae7 Merge pull request #118 from bcostm/master
Add STMicroelectronics NUCLEO_F103RB target
2013-12-02 03:15:58 -08:00
Bogdan Marinescu 6aaa134516 Merge pull request #117 from Sissors/master
Added (deep)sleep to KL25Z
2013-12-02 01:55:33 -08:00
bcostm 3bcf77e4f7 NUCLEO_F103RB: minor changes 2013-12-02 09:22:28 +01:00
Sissors 9f89a4d218 Added (deep)sleep to KL25Z
Sleep is wait mode

Deepsleep is very low power stop mode

During the interrupt that removes it from deepsleep it will run at low
speed until the PLL is automatically re-enabled after the interrupt.
2013-11-30 19:28:00 +01:00
Michael Moon a249e39826 Improved baudrate calculation function.
Uses 100% integer math, delivers more accurate results with fewer iterations in less time.

Since it seems most of the NXP chips use identical math, I have also altered the other targets in this commit.

If there are non-NXP chips which use a similar serial block, consider porting to those as well

Comparison:

         BAUD   DL MUL DIV  CPU_CLOCK
      -------  --- --- --- ----------
new: {   9600, 625,  1,  0,  96000000},	// Actual baud:    9600, error =0.00%,    1 iterations
old: {   9600, 625,  1,  0,  96000000},	// Actual baud:    9600, error =0.00%,    0 iterations

new: {  38400, 125,  4,  1,  96000000},	// Actual baud:   38400, error =0.00%,    8 iterations
old: {  38400,  81, 14, 13,  96000000},	// Actual baud:   38409, error +0.02%,  420 iterations

new: {  57600,  81,  7,  2,  96000000},	// Actual baud:   57613, error +0.02%,  120 iterations
old: {  57600,  54, 14, 13,  96000000},	// Actual baud:   57613, error +0.02%,  315 iterations

new: { 115200,  27, 14, 13,  96000000},	// Actual baud:  115226, error +0.02%,  120 iterations
old: { 115200,  27, 14, 13,  96000000},	// Actual baud:  115226, error +0.02%,  210 iterations

new: { 230400,  23, 15,  2,  96000000},	// Actual baud:  230179, error -0.10%,  120 iterations
old: { 230400,  17, 15,  8,  96000000},	// Actual baud:  230179, error -0.10%,  525 iterations

new: { 250000,  24,  1,  0,  96000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  24,  1,  0,  96000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   6,  1,  0,  96000000},	// Actual baud: 1000000, error =0.00%,    1 iterations
old: {1000000,   6,  1,  0,  96000000},	// Actual baud: 1000000, error =0.00%,    0 iterations

new: {2000000,   3,  1,  0,  96000000},	// Actual baud: 2000000, error =0.00%,    1 iterations
old: {2000000,   3,  1,  0,  96000000},	// Actual baud: 2000000, error =0.00%,    0 iterations

new: {   9600, 514, 15,  4, 100000000},	// Actual baud:    9600, error =0.00%,  110 iterations
old: {   9600, 337, 15, 14, 100000000},	// Actual baud:    9593, error -0.07%, 1365 iterations

new: {  38400,  93,  4,  3, 100000000},	// Actual baud:   38402, error +0.01%,  120 iterations
old: {  38400,  85, 12, 11, 100000000},	// Actual baud:   38363, error -0.10%,  525 iterations

new: {  57600,  62,  4,  3, 100000000},	// Actual baud:   57604, error +0.01%,  120 iterations
old: {  57600,  61,  9,  7, 100000000},	// Actual baud:   57633, error +0.06%,  840 iterations

new: { 115200,  31,  4,  3, 100000000},	// Actual baud:  115207, error +0.01%,  120 iterations
old: { 115200,  31,  4,  3, 100000000},	// Actual baud:  115207, error +0.01%,  525 iterations

new: { 230400,  19,  7,  3, 100000000},	// Actual baud:  230263, error -0.06%,  120 iterations
old: { 230400,  19,  7,  3, 100000000},	// Actual baud:  230263, error -0.06%,  735 iterations

new: { 250000,  25,  1,  0, 100000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  25,  1,  0, 100000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   5,  4,  1, 100000000},	// Actual baud: 1000000, error =0.00%,    8 iterations
old: {1000000,   5,  4,  1, 100000000},	// Actual baud: 1000000, error =0.00%,  315 iterations

new: {2000000,   2,  9,  5, 100000000},	// Actual baud: 2008929, error +0.45%,  120 iterations
old: {2000000,   2,  9,  5, 100000000},	// Actual baud: 2008929, error +0.45%,  315 iterations

new: {   9600, 625,  4,  1, 120000000},	// Actual baud:    9600, error =0.00%,    8 iterations
old: {   9600, 404, 15, 14, 120000000},	// Actual baud:    9602, error +0.02%, 1575 iterations

new: {  38400, 179, 11,  1, 120000000},	// Actual baud:   38408, error +0.02%,  120 iterations
old: {  38400, 101, 15, 14, 120000000},	// Actual baud:   38409, error +0.02%,  525 iterations

new: {  57600,  93,  5,  2, 120000000},	// Actual baud:   57604, error +0.01%,  120 iterations
old: {  57600,  68, 12, 11, 120000000},	// Actual baud:   57545, error -0.10%,  420 iterations

new: { 115200,  47, 13,  5, 120000000},	// Actual baud:  115248, error +0.04%,  120 iterations
old: { 115200,  34, 12, 11, 120000000},	// Actual baud:  115090, error -0.10%,  315 iterations

new: { 230400,  19,  7,  5, 120000000},	// Actual baud:  230263, error -0.06%,  120 iterations
old: { 230400,  17, 12, 11, 120000000},	// Actual baud:  230179, error -0.10%,  210 iterations

new: { 250000,  30,  1,  0, 120000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  30,  1,  0, 120000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   5,  2,  1, 120000000},	// Actual baud: 1000000, error =0.00%,    3 iterations
old: {1000000,   4,  8,  7, 120000000},	// Actual baud: 1000000, error =0.00%,  210 iterations

new: {2000000,   3,  4,  1, 120000000},	// Actual baud: 2000000, error =0.00%,    8 iterations
old: {2000000,   2,  8,  7, 120000000},	// Actual baud: 2000000, error =0.00%,  210 iterations
2013-11-29 02:44:14 +11:00
bcostm 1159845529 NUCLEO_F103RB: update channels management in analogin api 2013-11-27 15:39:57 +01:00
Bogdan Marinescu 256f70fffc Merge remote-tracking branch 'origin/master' 2013-11-26 17:14:46 +02:00
Bogdan Marinescu 3c0a8b633f Provide generic pinout defines
This commit adds generic peripheral names to various mbed enabled
boards, to make it easier to write portable code amongst various
mbed boards.
2013-11-26 17:12:36 +02:00
bcostm dd292a7e71 NUCLEO_F103RB: Add pwmout api + change timers for ticker 2013-11-26 09:26:08 +01:00
bcostm c33dbfd63d Enable STDIO messages used by the test firmwares 2013-11-25 10:20:39 +01:00
bcostm c47bc1780a Add UseMicroLIB option for exported project 2013-11-22 11:41:07 +01:00
Bogdan Marinescu f6c9c8db5e Fixed initial SP value 2013-11-21 19:07:52 +02:00
Emilio Monti 64952d4f7e Merge pull request #114 from mazgch/master
Avoid hardfault when CAN object is destructed.
2013-11-21 08:40:43 -08:00
mazgch a3a16b3683 Avoid hardfault when CAN object is destructed.
interrupts have to be disabled(can_irq_free) before we turn off(can_free) the peripheral
2013-11-21 17:31:17 +01:00
Emilio Monti 5278dd43f2 Merge pull request #113 from mazgch/master
fix the documentation to ethernet api to match implementation
2013-11-21 02:32:05 -08:00
mazgch 2b7d2bb343 fix the documentation to match implementation 2013-11-21 11:24:58 +01:00
Emilio Monti 6a5335a40e Merge pull request #112 from Sissors/master
Added sleep to LPC81x
2013-11-21 01:58:28 -08:00
Sissors 585e05ca6a Added sleep to LPC81x
http://mbed.org/users/mbed_official/code/mbed-src/pull-request/6
2013-11-21 08:19:44 +01:00
hototogi 03b79b5920 support GCC_ARM for LPC4330_M4
- Linker script is based on LPC1768
     number of NVIC is 16 (CORE) + 53 (M4 in LPC43xx) = 69,
    therefor, reserve at the top of RAM0 (address:0x10000000)
    to relocate NVIC vector table
 - startup file is based on startup_ARMCM4.S in CMSIS V3.20
     change NVIC name for cortex-M4 of LPC43xx
 - add GCC_ARM for LPC4330_M4 in python scripts
 - add some descriptions for GCC_ARM
2013-11-20 17:03:59 +09:00
bcostm 415ac34b56 Add analogin, serial and spi support for NUCLEO_F103RB 2013-11-19 09:11:31 +01:00
bcostm 70dd0d891e Add STM32F10x standard periph driver 2013-11-14 11:33:29 +01:00
bcostm 6d9b523185 Update workspace_tools files 2013-11-14 11:07:01 +01:00
bcostm beb779b3d6 Rename target 2013-11-13 09:29:29 +01:00
Bogdan Marinescu 5b6faea448 Removed redundant label TARGET_LPC81X_COMMON 2013-11-11 13:28:18 +02:00
Joris Aerts 76ffc4935e Fix bug in gpio_set not setting reserved pins correctly
Loop going over reserved pins was not going over all entries as result of incorrect sizeof
2013-11-08 13:39:00 -08:00
bcostm b8ddfce3d0 Change folder name to TARGET_NUCLEO-F103RB 2013-11-08 11:19:09 +01:00
bcostm 96a96f2cb6 Add STM32F10X cmsis files 2013-11-07 14:16:01 +01:00
bcostm c0d5675480 Add STM NUCLEO64 STM32F10X basic files 2013-11-07 11:32:01 +01:00
0xc0170 f4591dbbab Merge branch 'upstream_master' into dev_kl46z 2013-11-05 22:08:07 +01:00
Andreas Rebert 09cf4ef128 Support for exporting to GCC_ARM 2013-10-31 13:28:05 +01:00
pbrier b1d88905a9 fixed can_filter() prototype (prevents build of LPC1768) 2013-10-26 17:02:29 +02:00
Emilio Monti 317a1f66d2 Merge pull request #91 from jorisa/master
Add CAN api filter support and LPC11CXX CAN implementation
2013-10-25 06:58:05 -07:00
Bogdan Marinescu 9d881770c9 Merge remote-tracking branch 'github/master' 2013-10-25 15:43:01 +03:00
Adam Green 969733ae8f serial_putc() to make better use of Tx FIFO
If don't know if this is an issue that anyone cares about.  I am also
not sure what the best way to solve it is either.  I just thought I
would issue a pull request with this commit to bring the issue to light
and show a possible solution that I have tested on my mbed-1768 device.

Previously the serial_putc() API didn't make any use of the Tx FIFO
since the serial_writable() API it utilizes only returns true when the
FIFO is completely empty.  This is due to the fact that the THRE bit of
the UART's LSR (Line Status Register) only goes high when the whole
FIFO is empty.

I noticed this when doing some performance testing with the network
stack.  I went from calling printf() to output 3 bytes every 10 seconds
(with packet drop stats) to instead output 4 bytes every 10 seconds.
I thought these should easily fit in the 16 byte FIFO but outputting
one extra byte caused an additional three 550 byte UDP packets to be
dropped.  This should only happen if the additional character being
sent to the UART was taking away extra CPU cycles from the network
stack.

My solution is to keep track of the number of bytes that have been
placed in the Tx FIFO since it was last detected as being completely
empty (via the THRE bit).  Only once this count hits 16 does the code
then block, waiting for the THRE bit to go high.  Each time the THRE
bit does go high, the count is reset to 0 again and it is incremented
for each byte that is loaded into the THR.
2013-10-25 15:17:06 +03:00