|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 |$ {* F8 |+ |! ^
void PSCInit(void)
0 ]# n$ n7 p. v* I7 P9 V# l{1 `9 ]1 w |3 e2 _
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# q: m( q; r) `& ?6 T}
8 a! p# R) ?6 t* |
$ p; u1 N9 R. o2 y! L7 mvoid GPIOBankPinMuxSet(void)
+ n" ?/ y4 @2 X0 \& g( b{6 j. D( _( }. x6 @9 O7 {
// DRDY ------------ GPIO6[14] -- 1114 J# p7 _* [ O5 `- ]) A
// SPI1_CLK ------------ GPIO2[13] -- 46
7 w. w# ]9 G1 r6 a' ]8 x, B) ~ // SPI1_SOMI------------ GPIO2[11] -- 44
1 G+ L# |# F3 d/ m% U/ p" F5 m1 G // SPI1_SIMO------------ GPIO2[10] -- 43
/ d% i/ v: z" v- @# q; _( a // SPI1_CS2 ------------ GPIO1[0] -- 17
" R; Q- C( I- q1 w" ?( N( T S5 u // SPI1_CS3 ------------ GPIO1[1] -- 18
2 \* o6 x4 D# l
. @6 A B6 O7 K5 b( R% I7 V' t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
; M/ E0 F, J, r: j& j6 D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( _( h7 K5 e7 k# @: X2 j) e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080); F9 a" ~8 X! S5 J) J7 \9 J! @
3 K( H& \$ g# I+ X( q //DRDY% S* v! ]. w2 Z# v) z: v
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) c2 I1 K% W3 p+ N# u: S // CS2,CS3" ~) c; p9 i: U; G( _9 S$ Z3 c
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
7 e/ ^2 i) P; L1 t GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 k' ~1 c! }* `) S
//SIMO
' N, D# k! J3 Y. \; t GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, x# a# y) O/ _7 T, {7 Z
//SOMI
" @* R$ [+ K0 I8 ^/ s GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 K. p0 J: e4 }3 b* M& }5 Q
//CLK/ g+ z# K5 I* _2 N, n' n* h
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; w/ }+ l" W' Q1 m& T
7 u7 T) h5 r% D/ q) B! ~: L3 M: H! a // LDAC
* b: D, O' a" V( j4 {0 E/ k GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! r. i( u; { L* ^* N3 L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; [ s% I G* b( _+ [4 o5 t: P1 ^1 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 ]% p6 [) E* B( m$ p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3% \3 D! E; W+ v
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! d3 K# r( Y3 C/ E5 D @}
- N; J) U3 a7 ]3 f! v: ]2 x, F1 ^2 G4 ~; g. [9 P
int main(void)
9 k" s8 {0 Q9 I m{
1 J' { r( J* `$ J) {) `0 s( J6 B+ ? // 外设使能+ j$ N p+ F% ~7 k8 X
PSCInit();
* {# h: V1 ^# J9 T. ?" G' o0 Z/ N$ t" B, c
$ g4 q! ?2 W7 b" ~
// 管脚复用配置, T8 d3 d4 {) B+ s: w' b; {
GPIOBankPinMuxSet();( V$ Y- {, I, m4 I5 L
for(;;)) l: X: _, {- B" m% T0 p' V) V7 u
{
9 l# E }( s e SET_SCLK();//时钟正常输出 u! s2 q( { S1 s }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 c3 _, x0 |7 D: l6 q3 F( \' d* o
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 A! G5 _3 e2 u; j& }3 e* k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 r, [+ ?, W4 b6 p
9 `5 B. ]6 c- ^* W' T7 o
delay(20);
. T( y0 A2 D5 Y# S1 V* e CLR_SCLK();
' Q9 G. b5 l3 G2 i( [( n1 L6 \/ s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
0 P7 G' \2 L+ N* _- b/ Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 i/ k5 e4 c8 E% @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 m. |, V+ X. @ delay(20);- e4 r9 q1 e# q2 d/ j& q" O
}$ c. A* i* k O1 m1 G
}
( U" K$ X V% S |
|