|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 d) ^$ k! ]! C! O
void PSCInit(void)
$ U, T/ \+ w1 S; g& G! M: k{
7 q# `7 _& J( Q PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
a ^7 \# Z1 W0 K* ?+ f}( W3 d% j- p# H2 g
5 y2 _( A7 l6 t! E
void GPIOBankPinMuxSet(void)
7 z- A+ d9 D, ~- }; s{1 N- x, Y: i! J
// DRDY ------------ GPIO6[14] -- 111
. S9 c+ x. U6 r. e* q# k1 V // SPI1_CLK ------------ GPIO2[13] -- 465 X; {4 w5 f. _6 r
// SPI1_SOMI------------ GPIO2[11] -- 44
" M" }" `) E# h' U* h! j5 Z // SPI1_SIMO------------ GPIO2[10] -- 43
9 k* B" x$ ?9 \, L* L8 j // SPI1_CS2 ------------ GPIO1[0] -- 17+ Y }/ Q3 @, m7 x
// SPI1_CS3 ------------ GPIO1[1] -- 18' w# p; {& x9 O6 e' A3 J* B
- \# {# r X& } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" B' Q$ d" p4 F N1 z4 @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);8 o+ S" c3 b! D: Q$ D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, R# c5 v2 J- J* u: d& Y& f( V* E& j* a! S6 c b8 W. T2 W0 V( x
//DRDY
3 L( A4 q3 R+ q: s1 e1 }) M9 _ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* W& Q1 M% ^! b9 U' O2 Z
// CS2,CS3* W# K" C0 h' m& O1 O8 ~$ x
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2' X2 D5 f3 b; S# g& G7 w
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 j7 s# G$ u7 X# c4 R7 Z, X //SIMO
1 o. f' D: C6 A* w GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! V+ u4 W2 h9 H* k //SOMI
7 D( }6 Y# p9 F% m GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- B7 y3 @! @" q/ g( V //CLK& t C% z4 G/ R" m/ R. I
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 i; H$ _$ g( N3 h
( t/ s& \2 Q6 f# F3 A' q
// LDAC* J3 P2 f, M# K6 z
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
/ M, _% m! h9 E( S1 B( T$ g& z% R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 {- J+ ]5 ?2 e9 V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" J+ F" X* e7 I) r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS31 ~/ _) b# }1 r9 l' Y
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; ` H5 J7 K9 {( {! l, h}
+ P) F% \; C2 s- V1 w% D- ~4 _0 K. \( G+ q* v. R( N# C
int main(void)! G8 g; F: w* ^. _- T
{
0 f9 z+ ]0 O& S8 O% C7 X // 外设使能+ K* \4 c p( B& D8 f2 ^% ?
PSCInit();
& L1 w* z1 B# v
9 B8 d/ j3 W, K: W9 L# E0 U3 B ' u& q2 z4 c9 `; | x
// 管脚复用配置9 g8 `- S- n/ q9 g1 D
GPIOBankPinMuxSet();
5 X2 z# k/ W% E8 e& @ for(;;)
: e a3 n7 @) D. K+ ~3 t: \0 V' ? {
8 x6 A8 W) C# x! j, E0 n4 J: Z SET_SCLK();//时钟正常输出
' Q% s# |) h. N) D, a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 d1 {0 Q9 j* l3 Z% a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 t; p% ?% d( g) g$ S9 a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. v( x1 Z( A5 h/ ]$ h! h
* J+ e2 K+ @9 D s( J- | delay(20);( u- ?* i o. M \* u1 t2 a
CLR_SCLK();
* x4 t5 t7 @% w, X8 } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% w% j: j) F, X( K' j8 B1 j" J GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- Z, A1 V2 f% _. _; K! o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ \6 p( V3 ]+ g( |" V+ Y( D" Y
delay(20);2 K( P9 i& Q/ w: C, @, W p
}
! |5 C4 W$ i: a5 }! I, K: c}( ?3 V8 Q% j' i+ e- U9 ?
|
|