|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 S- Q2 \' l, K m- svoid PSCInit(void)$ o0 q& E8 W4 \ v
{! k; u1 Z( \% ?) r2 C# M7 j7 L" a
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# z7 Z, ]! \! ]6 R: y$ y- J/ X }1 y}# u8 |" [ s& v
% a0 W0 ^8 q+ f2 h: n/ s
void GPIOBankPinMuxSet(void)8 N$ z6 N7 |# j4 s! y" Y
{" |' d$ V4 h' R
// DRDY ------------ GPIO6[14] -- 111) @; J0 w7 e5 `
// SPI1_CLK ------------ GPIO2[13] -- 46+ R c- _/ U9 T2 r
// SPI1_SOMI------------ GPIO2[11] -- 44
. `0 H0 Q. k" f7 N( Y2 B( g // SPI1_SIMO------------ GPIO2[10] -- 43
% E- E6 V4 t2 b: h: @# x // SPI1_CS2 ------------ GPIO1[0] -- 17
6 O, O. M6 j; |7 w7 T // SPI1_CS3 ------------ GPIO1[1] -- 18: c0 z' d0 \9 h/ j1 S
8 W. V1 ~7 D& H0 F5 Z$ l; F: M! ]; [
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- J- ~% U1 o7 M% d { `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
. V" I9 {* l5 b: B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 g9 w) X: ~# i* E- A
: `$ ~, L/ u* I
//DRDY
" o I% d+ ^6 I# Z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" I; n+ Q, s0 F* q* G7 g! u! C
// CS2,CS3
% _) R8 `$ L/ l/ {& v) E) g GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS20 }2 p6 }: z5 T- O
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 W$ r n: ?) Y) M% |5 ~ //SIMO4 c0 B. Q5 x4 A* R. a
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; G! |2 _$ L. H3 v# z9 k9 n- ^
//SOMI
2 c- o1 s- v' M# h/ s- K& x9 {, J GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: R5 Z' x1 G8 E0 ]8 ?2 N8 g //CLK, R- p- q" s6 p4 W$ i( G- l& K
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* f3 Y7 X+ O I* Z" g; l8 g+ }7 t! N4 c5 e% J/ m% r* M- R0 V
// LDAC4 H* A4 @; _0 U7 Q0 ~' I( s
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
0 J: R) z5 [5 [3 F0 }, T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) E0 J* e, O0 i" [2 i/ G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 k; ~! i2 i% e; u+ I* f5 M$ P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ n3 _9 Q/ I: Y6 \7 Z" Z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: d% _ g4 h# ]5 _% v}
1 D) ^+ j; c+ k3 z# _% r2 X, C9 U: S
int main(void)
) [; q7 {: J/ { A" j2 C{
( ?' k: u& V h* W // 外设使能
6 N/ \" C q& c PSCInit();
. m/ e6 L; |. S- H: e8 W
; {2 j+ W% k' s" L1 T% P2 g, N* T
9 I# p+ O6 t6 u3 t& z // 管脚复用配置
8 o9 Y" `& e5 [3 E5 S1 X) P* q4 v1 [ GPIOBankPinMuxSet();7 ~1 {) K: N& J S+ l1 y( B
for(;;), H2 G8 S' z ] @' x. ~; s
{/ H: w4 @$ }# T6 c, D! w
SET_SCLK();//时钟正常输出: x5 A7 Y4 D( M1 w% ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. K Q' x! t s9 Y* x& Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 b$ p6 u& Q7 c7 _) z GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 u' s2 z6 h. \; ?- G/ r( A# N
. d6 C/ p& q6 l9 m+ P$ Q# |
delay(20);
3 z3 {8 ~( c/ ~# T c: p CLR_SCLK();
2 M* A1 j( H7 _) @) ~ j. G$ w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 A) ~+ o/ R. H5 V S! v) ]8 W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! v! r% ?1 l' P- w W" f; x \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. K4 g' l, p1 W; _) @
delay(20);
, M1 j% ]3 g T; c }
. m {; q0 T7 o1 ?) `. M" B2 v}
1 b% L; z* ]! N" G5 d% A- L |
|