@@ -36,8 +36,9 @@ SPI::SPI(PinName mosi, PinName miso, PinName sclk, PinName ssel, PinName dcx) :
36
36
_miso (miso),
37
37
_sclk (sclk),
38
38
_hw_ssel (ssel),
39
- _dcx (dcx),
39
+ _hw_dcx (dcx),
40
40
_sw_ssel (NC),
41
+ _sw_dcx (NC),
41
42
_static_pinmap (NULL ),
42
43
_init_func (_do_init)
43
44
{
@@ -59,8 +60,32 @@ SPI::SPI(PinName mosi, PinName miso, PinName sclk, PinName ssel, use_gpio_ssel_t
59
60
_miso (miso),
60
61
_sclk (sclk),
61
62
_hw_ssel (NC),
62
- _dcx (NC),
63
+ _hw_dcx (NC),
63
64
_sw_ssel (ssel, 1 ),
65
+ _sw_dcx (NC),
66
+ _static_pinmap (NULL ),
67
+ _init_func (_do_init)
68
+ {
69
+ // Need backwards compatibility with HALs not providing API
70
+ #ifdef DEVICE_SPI_COUNT
71
+ _peripheral_name = spi_get_peripheral_name (_mosi, _miso, _sclk);
72
+ #else
73
+ _peripheral_name = GlobalSPI;
74
+ #endif
75
+ _do_construct ();
76
+ }
77
+
78
+ SPI::SPI (PinName mosi, PinName miso, PinName sclk, PinName ssel, PinName dcx, use_gpio_ssel_t ) :
79
+ #if DEVICE_SPI_ASYNCH
80
+ _irq (this ),
81
+ #endif
82
+ _mosi (mosi),
83
+ _miso (miso),
84
+ _sclk (sclk),
85
+ _hw_ssel (NC),
86
+ _hw_dcx (NC),
87
+ _sw_ssel (ssel, 1 ),
88
+ _sw_dcx (dcx, 1 ),
64
89
_static_pinmap (NULL ),
65
90
_init_func (_do_init)
66
91
{
@@ -81,8 +106,9 @@ SPI::SPI(const spi_pinmap_t &pinmap) :
81
106
_miso (pinmap.miso_pin),
82
107
_sclk (pinmap.sclk_pin),
83
108
_hw_ssel (pinmap.ssel_pin),
84
- _dcx (pinmap.dcx_pin),
109
+ _hw_dcx (pinmap.dcx_pin),
85
110
_sw_ssel (NC),
111
+ _sw_dcx (NC),
86
112
_static_pinmap (&pinmap),
87
113
_peripheral_name ((SPIName)pinmap.peripheral),
88
114
_init_func (_do_init_direct)
@@ -99,8 +125,27 @@ SPI::SPI(const spi_pinmap_t &pinmap, PinName ssel) :
99
125
_miso (pinmap.miso_pin),
100
126
_sclk (pinmap.sclk_pin),
101
127
_hw_ssel (NC),
102
- _dcx (NC),
128
+ _hw_dcx (NC),
129
+ _sw_ssel (ssel, 1 ),
130
+ _sw_dcx (NC),
131
+ _static_pinmap (&pinmap),
132
+ _peripheral_name ((SPIName)pinmap.peripheral),
133
+ _init_func (_do_init_direct)
134
+ {
135
+ _do_construct ();
136
+ }
137
+
138
+ SPI::SPI (const spi_pinmap_t &pinmap, PinName ssel, PinName dcx) :
139
+ #if DEVICE_SPI_ASYNCH
140
+ _irq (this ),
141
+ #endif
142
+ _mosi (pinmap.mosi_pin),
143
+ _miso (pinmap.miso_pin),
144
+ _sclk (pinmap.sclk_pin),
145
+ _hw_ssel (NC),
146
+ _hw_dcx (NC),
103
147
_sw_ssel (ssel, 1 ),
148
+ _sw_dcx (dcx, 1 ),
104
149
_static_pinmap (&pinmap),
105
150
_peripheral_name ((SPIName)pinmap.peripheral),
106
151
_init_func (_do_init_direct)
@@ -110,7 +155,7 @@ SPI::SPI(const spi_pinmap_t &pinmap, PinName ssel) :
110
155
111
156
void SPI::_do_init (SPI *obj)
112
157
{
113
- spi_init (&obj->_peripheral ->spi , obj->_mosi , obj->_miso , obj->_sclk , obj->_hw_ssel , obj->_dcx );
158
+ spi_init (&obj->_peripheral ->spi , obj->_mosi , obj->_miso , obj->_sclk , obj->_hw_ssel , obj->_hw_dcx );
114
159
}
115
160
116
161
void SPI::_do_init_direct (SPI *obj)
0 commit comments