|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' N' z5 o3 o/ Z, {; T9 E1 ?7 rvoid PSCInit(void)
5 Y+ u0 W; L Q8 i# h9 H1 B, ?( q" ~{% @" k& C- Q/ }
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ { U% e; [3 @5 m
}( x, J3 n* R* d( K& ?; [' B; i3 m7 e
|& \$ J( v) i! y
void GPIOBankPinMuxSet(void)
, U" h9 c) {% ?7 @( o, L{
# F9 `& {& { R- Z. T+ t# i7 l // DRDY ------------ GPIO6[14] -- 111
# A9 R" `1 s& p$ {5 b9 W- n& o // SPI1_CLK ------------ GPIO2[13] -- 46
# A9 i$ y5 s) |* t* P% ~ // SPI1_SOMI------------ GPIO2[11] -- 44% j7 Y7 z+ r, c! _' b5 ]# F
// SPI1_SIMO------------ GPIO2[10] -- 43
) k: q( s) n8 x4 U$ P2 S: x" t // SPI1_CS2 ------------ GPIO1[0] -- 17# l0 L1 y1 ^7 c8 j
// SPI1_CS3 ------------ GPIO1[1] -- 18
5 C* n0 I& i0 N( ~* _
+ n1 L: _' C* z7 J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ t3 p3 A+ m7 d% W5 O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; p# U& ~9 ?% [4 W" n3 C+ j) E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
6 u! ]# }" j( \" s: A' d5 D- {5 ?2 K6 `: V0 i% e4 s, o- _
//DRDY+ D y; a: ]+ M0 ^: J, \% G
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; K, a1 n0 o9 H) ]
// CS2,CS3
" N2 d( _4 x; w3 y O6 n GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ }" a5 K$ N3 N6 u
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ R8 \4 P" O; V+ M
//SIMO
" |* M& M: e( F! y# f GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. |7 ^- y: K; ]2 h1 J0 @
//SOMI
h( ^# i7 r; A2 N0 ? GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 q. r) B9 x! Q# N+ c //CLK
+ w6 F5 m# m6 w2 z% z8 ` GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK \1 j# P% l, M# z# F' h5 _
* N/ K0 D( O+ M$ p3 k# P
// LDAC. J2 ]& `; ~' R( ~2 }7 e) i
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 J2 ?3 P0 L: ]) m3 V# O: J$ q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 |, m# Q! j+ }# E" {1 V5 { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; z, v; h: o; C/ w: |# E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
) f/ P( q8 H! g$ f5 S GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 Q% f4 S; Y" |& m# q
}+ Z& S! H& R" ?6 }, T2 e8 f
$ R6 s' U- d6 i: f3 o( ^4 E4 B
int main(void): H4 G, u8 t8 `4 R
{ O3 ~6 B& r4 U4 B- }8 L
// 外设使能( T. |$ Z# F8 d$ y3 d3 H% i' C3 V
PSCInit();
1 _+ Z0 v4 q0 D. b# E' j' V% Q2 p. n9 W
* S/ a1 ~" G" W/ E( Q" t R // 管脚复用配置% A2 c7 r: o8 V- X P; U& e* Z: m
GPIOBankPinMuxSet();
7 r' h( a8 B+ _# w for(;;)3 N# S2 I9 {7 ?
{
% E( ]- i b$ c3 H; V SET_SCLK();//时钟正常输出8 C8 @ g# `% f" }( S1 U7 L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ }6 S/ W0 @) U9 N4 t. E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
; c( L3 r+ M" u2 r, D/ ]$ N s+ O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ H: Y7 M$ l, p5 w9 p4 F+ y4 x% S
+ _- O5 a# E4 B, K! t, P% E
delay(20); G1 c" j: \+ b g5 I: O: z
CLR_SCLK();% L. }+ {# g$ \ h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' C* p) u7 |- U0 Q, q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
! N+ H: `. {0 q1 w3 m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. b. p* J5 C, e0 {. q. b5 w2 G% f delay(20);
! O, |* s1 ^+ E }
) v: W9 i% P9 _; X% i}
5 j- ?7 |8 |1 U. b |
|