|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 L$ ~" H" ?3 e0 D* F1 c3 Qvoid PSCInit(void)! s' B* P( P; x% j& E/ p7 P% K6 d1 Q
{2 z, a- b, x; |* ?7 a# G) S3 T
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& _! Z7 C; X2 O" u% m" m
}9 L8 }2 J0 |/ R- o4 N4 w
& t6 p# E; n7 h1 C& T
void GPIOBankPinMuxSet(void)
4 J5 S9 l- S* l2 \8 x% D{& @$ V0 Y5 |' q' d
// DRDY ------------ GPIO6[14] -- 1118 g& {4 M+ L+ P( W8 c5 L
// SPI1_CLK ------------ GPIO2[13] -- 46
; k/ k9 T8 t k7 W9 m8 w6 Q // SPI1_SOMI------------ GPIO2[11] -- 44; j7 ~; W# _3 _- s2 M8 X/ ^! H
// SPI1_SIMO------------ GPIO2[10] -- 43' J8 g/ L. V7 }0 p" S
// SPI1_CS2 ------------ GPIO1[0] -- 176 D" |4 u0 z/ V. Q1 J: |5 |
// SPI1_CS3 ------------ GPIO1[1] -- 189 g8 p5 k8 D+ a8 y2 c& B
: F; t# i+ h7 B$ ~
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 `' _3 I E5 z7 K1 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# h) I; _3 {. v) |8 q, @; P4 e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( v4 \, j& U5 {
0 U' o0 q6 w b! ?+ J //DRDY
7 N' e/ d; H) B+ K" f GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 _# u# W1 Y* Y3 F+ y" f // CS2,CS32 J" P6 p! t2 J9 {$ Q) E1 e
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: d( ^. U; T' Y( ?8 i GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
+ L+ G6 t) A0 e% ^7 {9 ^- Z //SIMO
3 w8 w/ s _4 |4 j- G GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
# S1 M, \4 U6 D //SOMI4 F) G& [; v6 X5 S3 {: Q1 U, w
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* |6 K# C) e) C; A //CLK
. G; C5 s; d- ]# ~% L3 ^: M GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
" H6 |3 n% O2 D4 W% x0 h; E; ^4 Y+ O. i' e5 K4 h: T
// LDAC
2 G3 `4 \+ \9 y/ w GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 i- r% i+ @# j. ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 _. p; Z3 w3 I3 M) G5 B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 S. _' j. L \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
- e( z( \" S$ T0 e' Q GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# U2 V+ U. D \. }
}! Q2 v; V2 }, P
/ v( c) r4 R/ w# s6 h
int main(void)
; M- |/ O* x% F2 ~. \( F{$ _# p: B5 k, G- H# G: J
// 外设使能- X0 y9 n T- F3 t f# }# T
PSCInit();
. O; ~7 F4 } U( u2 E2 U9 e! b+ L! ?, H& x
/ q$ U+ [0 u; r' r/ p% W* _ // 管脚复用配置
" [6 t/ S& t& g GPIOBankPinMuxSet();5 w3 p( ~; S- S! L
for(;;)
/ z/ K, M% q" B2 A0 Z9 S" U" { {; u+ a: P' {: d3 d! e6 M1 s
SET_SCLK();//时钟正常输出
' U& ]* V* h* P# ]( h- H5 Z+ ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 j( x( P$ @- U GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 R3 R) _8 T! n6 X1 x/ g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; P7 f1 g3 L% P
X4 j# w/ A2 l: i& J8 d
delay(20);
0 B! E8 T2 f( I5 r c CLR_SCLK();
* k! b c# M4 G8 u% [- H1 g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
* L" O2 w9 c6 r& `, h( M3 G# W+ G5 O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, ]5 f9 T" ~* m8 h# E- Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN7 f1 K( q% a: I6 @8 \- Q0 [; `
delay(20);
; z% m1 ]3 ~9 D9 K' n6 T }/ d- ^7 t4 P0 I) p
}8 J a! \- E4 _5 A7 M
|
|