|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( ]+ @2 C" d" ]# G4 p$ fvoid PSCInit(void)
, d6 C8 E9 r. L" ^1 `( |{
! O; z7 ]. G* h# X7 Z" H- Y) G PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);! b+ |9 \; b! F7 ?. I. t; z
}
2 k% Y2 G& `$ g& ^8 M G" I, [9 E h7 q& K: _* g! N
void GPIOBankPinMuxSet(void)
8 I& t3 E8 n1 K/ `$ C3 y9 H( O{( J) g! c6 s6 W7 c8 ]
// DRDY ------------ GPIO6[14] -- 111
& Z) d2 z6 a2 n e: r( V // SPI1_CLK ------------ GPIO2[13] -- 46
' n6 b. t0 P( w, H% e5 w" W, a // SPI1_SOMI------------ GPIO2[11] -- 44& \9 A, m- U: p4 B- X; i
// SPI1_SIMO------------ GPIO2[10] -- 43' |" H1 R, l8 i9 B; F' V
// SPI1_CS2 ------------ GPIO1[0] -- 17
( t: e. d6 R1 z4 e, J // SPI1_CS3 ------------ GPIO1[1] -- 18
. }& o; k7 s6 j) M. F( ?0 s1 T0 ~ ^, s8 g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
, A- ?" A5 o8 \( \" r3 c4 ~# _, J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
+ e* y; d0 R# | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 `1 \ Y; W1 ]2 X- z
) `' K& x: c- o$ D
//DRDY: a5 n- }6 t% V+ O
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" d2 ]4 J3 ] P* I2 R
// CS2,CS39 [4 y1 E7 `$ o1 P6 E3 _& P
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
- b! p3 P! t- @& j2 C GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) z# M7 ?5 v5 O. Y/ n //SIMO% p8 M4 n4 g$ m1 C6 u
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 z, ~: i$ \# g& z
//SOMI
. c% p8 J4 W7 h5 H0 \% H+ D4 z GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* x. Y/ N5 q1 h7 P //CLK
1 s" l6 t& X- H$ ` GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ O5 D' N, j1 F0 y s# U. Y6 j4 v; u( `6 m0 q9 E
// LDAC. c6 O3 z* x; A- M' ^; s2 I2 W* X" E! J
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, }' c' z; b2 j2 p- h GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 b5 F# t, m2 X' f* g8 U8 D2 }% O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. f5 ]- Y. ~7 F0 F6 | GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
& ~1 H& L5 r* j2 B- c8 `$ Z+ P GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ L4 @" m1 c. r
}. p1 V7 z$ |6 f4 W) c. y2 q$ z
1 h, P. c8 v/ z# O! U3 l
int main(void)
: L! m6 x( F/ R" {% C6 D m- C5 {( t{
. p3 I3 ?4 U E! t: n9 j1 p, @+ Z // 外设使能- T k& \; S* b4 A7 v4 @! i
PSCInit();! g7 F' K1 t& Y4 x1 Z) ~
2 |# U/ ?# Y+ Z( B; m3 q4 x
* C* x$ s$ H+ w! p // 管脚复用配置& o# ~' T; ^ F/ q. \1 Q
GPIOBankPinMuxSet();& |: [& ]6 f2 `, V$ `1 _$ O
for(;;): U% E( S! K8 q `1 a
{
4 ?8 f( @$ o) o9 ^ e9 Y: N! c SET_SCLK();//时钟正常输出6 [! n4 I4 \" Q9 g: Q) D z; @" @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 x7 j" l2 `: M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" a7 O0 ^; I- w9 f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 F3 Z" M# @8 W5 P7 a
- Q+ t( P) g% g' V* @& b delay(20);
6 B4 s) V: E9 `4 N+ v CLR_SCLK();
, u$ O7 m, n" Z, b e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3, E$ ^7 X( m5 }3 ]4 V: ~/ r2 {# b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" V- o! [- e6 `. O& U/ A1 N% { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" l) g9 Y& O' k ]8 D/ ?+ X
delay(20);
$ g) a$ B2 X* S, x, l }
+ ^3 w1 T# c: d0 S `6 u: e}
- D; R! W% Y ]" W. Z- w9 {# l" e |
|