|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 \6 b9 b# w9 d. W# S& O0 `void PSCInit(void)/ q, c) X1 |2 M% b) c
{
& ]" J, V, }$ c6 q/ ~ PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);' C( V3 [$ d. V" f
}
& u5 n; T6 _) x1 k. f2 _4 S) g$ `& D; ^
void GPIOBankPinMuxSet(void)
( G3 a- r M' w! d# ]{$ G6 G4 n5 u I! \
// DRDY ------------ GPIO6[14] -- 111/ _& c) x2 v2 ^+ A3 g7 g' F
// SPI1_CLK ------------ GPIO2[13] -- 46" n6 j: T! B0 i; U+ o6 {
// SPI1_SOMI------------ GPIO2[11] -- 44
% e5 Y+ A* ~0 `: W // SPI1_SIMO------------ GPIO2[10] -- 43
. S" G. j4 ?1 ~7 O4 S( Q // SPI1_CS2 ------------ GPIO1[0] -- 17
{/ n+ ~6 a; g- \* r // SPI1_CS3 ------------ GPIO1[1] -- 185 G- ?2 n9 ~7 s, E9 S0 o, d
; D3 X( L5 P- x# x* S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 W' e5 G! K: S9 o
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
2 V; @8 X+ d* m) E2 N- F3 k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
; x% v5 @5 _, g0 ^; H5 d6 n) J2 L7 `( W. j
//DRDY$ ]5 G' P$ V" X7 e
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% T* I4 y% s) v
// CS2,CS3
. b' P; b1 `5 }6 e9 w: W) a, Y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! W7 a( `! l0 K, u
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3% v" l' o U# l u% ]
//SIMO
/ f" Y* t! j0 y$ f* E0 C GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. V( ?4 l( {% D5 G, n. ]2 s! R& k
//SOMI2 o& m* U7 m9 U
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
( M7 @( ]/ {9 Q% g0 I1 `8 ^9 W //CLK3 X E; A8 _0 y2 ~4 j% _
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 ^% o* v) U( T6 r& ]: }" `
1 E M2 \ N2 s/ |" u: A* L // LDAC
3 b# R- f# D! n GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) W0 J) U* ^* U( U1 {, C" o0 S# I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; V8 y' ?4 f3 G+ t' n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 |* n/ ]+ ^5 c. l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" J8 d; v9 J# \4 ]; r2 x) S GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
4 Z M, j' H* S. j}
# f- W* m @7 a3 k3 J" ?/ t/ ?: R( O! B$ l9 K& a% S
int main(void)- @" e% ~, |8 \/ ]: Q
{! R3 k0 I x- ^ \5 {! v, Q
// 外设使能% n9 J! z; X2 x- q# u
PSCInit();5 M& y/ O/ W9 D3 j
/ J0 C- I: ]' q6 n
- e* ^9 P7 e l* ~& ~ D // 管脚复用配置
& ~1 N9 y1 _2 X+ m2 F* n GPIOBankPinMuxSet();" d ]: d; Z2 B8 g3 p0 J
for(;;)
]/ r8 f5 j } {( z) T# W. a) A* ~
SET_SCLK();//时钟正常输出
, @6 O9 U6 a/ k+ W' F2 m, y$ q( C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 e' F0 P& c# Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ R1 i% K* P% C; S) x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
* g6 ~1 h+ Y9 \) C E! B
4 C) @, R3 ]- t delay(20);$ I. _+ `7 H- m0 r$ K4 e& O, Y
CLR_SCLK();
& { P, f& O4 L! Q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ |. {) b. F9 h/ x/ S3 R GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3$ D7 K/ T @$ G# d1 `$ |8 J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, z. d/ V3 m3 ^4 J+ T9 Q. Y delay(20);( \1 O1 ^# w, W
}
$ G1 A1 a5 `# E* ~& z. @! R8 S" Q}1 r) r; C' |- A* N( e
|
|