|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
7 ?& [7 K; }- _9 h* i4 ^void PSCInit(void)
2 t d3 Y/ V5 o4 U{* B' Q v) q% j5 a4 h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); N" Y ^6 c0 Z- s
} ]0 B" R p* \2 v. T
& n+ [& t) D# ]8 m, ?
void GPIOBankPinMuxSet(void)* {9 e, }5 k6 ^7 E1 T/ B
{& ^. V; g: i# z6 G
// DRDY ------------ GPIO6[14] -- 111
, V6 A- B* d# @) [1 f; _ // SPI1_CLK ------------ GPIO2[13] -- 46# R* a; K$ F7 Y; A& N" A: Y2 K
// SPI1_SOMI------------ GPIO2[11] -- 442 j; S& J9 P1 ]! _$ b/ [4 q* `
// SPI1_SIMO------------ GPIO2[10] -- 43/ \" J/ C3 n% h# l8 {# W4 Q6 |
// SPI1_CS2 ------------ GPIO1[0] -- 17
* J) F1 {8 K& \/ d h/ H // SPI1_CS3 ------------ GPIO1[1] -- 18
4 n, P. |* U6 z- o) J) n/ p8 u1 H8 p! L- T$ m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 Y& ]$ P$ B: C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 G/ ~, I. N$ Y+ V& Z: c$ E! G) h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 j# U& \: X: Q/ |, a& P: ~) M1 o
) N3 s" G: Q, c) Y1 \ z1 T //DRDY* J, G. v0 c1 h
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY9 H3 b) ^3 [3 _4 y
// CS2,CS3
5 N4 U; }" y$ F! v/ H2 p$ A$ f9 Y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ H% \ j2 [% g7 _2 a GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 N% k8 _; h+ Q( z1 L9 H h7 i" G! J //SIMO
; V8 C: k! }6 [' A GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% ^$ [9 Q3 _" d0 r1 d5 p //SOMI
- h/ y y9 |- j) C W+ j- w GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 T+ {7 @7 D$ m
//CLK, x$ \' k0 r2 ~/ [
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 P2 ^" F! O: T# v( n
0 u* s% z( {3 o7 v1 @" o, o8 [" g: Q5 m) W // LDAC P% d; s! Y+ A s& m: D
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* u: [; ?" J& T+ I1 d4 ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 Q7 p5 d/ ~) I* k/ N' y) k: } P4 q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 u; ]' _8 ?# c2 n M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; L/ u8 W7 h% h- O" | ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ k0 W9 Q) u- C5 S9 ~% L" }$ P}& r) \7 w6 V6 k
# Y& M/ O- V, B: O) P% @
int main(void)
* {# x5 ^* u+ L{
$ }% b+ B1 k d$ w // 外设使能: p6 Z2 ^7 \' Z9 p ~. N8 `
PSCInit();
9 k) x. ~* a7 n. O: l& m8 b
0 a( S7 n+ [: S! e+ l! {2 Z' J) A! [ 3 @1 ]7 `9 ~& R. g" Y1 u% \5 ]
// 管脚复用配置0 _5 h. k, e' G. @ P
GPIOBankPinMuxSet();
1 P1 D! Q# |9 J! z$ I for(;;)& ~% H0 W, [, Q
{
& i) _3 _) X/ N. V- I! q- G- f SET_SCLK();//时钟正常输出
; F9 N& l3 M' j# P7 O- _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. ] O2 u9 W0 | GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS33 }8 R7 X6 }* i! V3 C1 K' O9 Q" {3 y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 X* H' G4 B0 E+ H1 J" d
. X( W, Y0 b: B- G! z" G1 O4 S* [ delay(20);
- W5 ?: I, d$ b9 F' x K CLR_SCLK();# r7 v2 l* i5 |& @# d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ l$ {2 C) {, O# e1 a) h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS37 D5 W2 x, v5 h' m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% I4 p8 N6 q0 r$ q delay(20);
: h6 ?5 J# W/ U( x }
- X ]1 }. W8 Z% v. X}( D3 y1 `, [# y, S: M/ M
|
|