|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 L3 i# r# w a3 L8 K
void PSCInit(void)+ d3 B8 `' I6 k: D) R/ R
{
7 r6 M: [3 j% T& ~7 k# R5 q. ] PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, @" Q7 C4 s. Z3 d0 x! _- O) K
}* |4 T* }8 |( |5 s) H6 t: ^3 J
( e& L% c, R* `: R5 K( X
void GPIOBankPinMuxSet(void)" x3 G) a$ W8 @1 P/ W: M
{
3 r1 w2 m) b, L9 d' y // DRDY ------------ GPIO6[14] -- 111: Q) Z5 c5 f( x
// SPI1_CLK ------------ GPIO2[13] -- 46: G. f6 i+ ?$ O# J# I
// SPI1_SOMI------------ GPIO2[11] -- 44
7 m- c& |+ v; S7 w8 S" `5 s+ K // SPI1_SIMO------------ GPIO2[10] -- 43. i, \3 a7 m& ?# X+ l
// SPI1_CS2 ------------ GPIO1[0] -- 175 H% x1 N0 z/ O( J
// SPI1_CS3 ------------ GPIO1[1] -- 188 ^6 r0 g1 k# {- g4 d Z
' v1 L9 n8 u2 [3 y7 a5 M7 X* n; e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 e* `6 ^; Z$ y) q; i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
; Z! V+ c1 y$ |' Z9 c! J HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);2 c; ]9 l/ c8 @, L e0 X
/ [8 T( x- _$ H( U ?5 D1 @ //DRDY
, B9 J, z( M2 g) ~9 ?# [ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
1 W, |3 f3 h" M6 i* \$ y9 [ // CS2,CS3
# b7 s+ X1 H& e& L7 l% z GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 C/ S z u* x# ?* x6 C; ^
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
& K# m! m4 t" N //SIMO
9 ^; |# h2 ]8 P3 d5 T* |. Z6 `2 | GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
9 t& d$ `7 ]3 p a //SOMI2 ?' O. ^' W k! x& ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 \ |( a$ v" q) _9 c4 V //CLK; x5 v1 m( {8 w
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ Z7 l$ a0 u# x9 m0 M- V2 q6 V* [4 H4 k% E! m3 r) u
// LDAC! f2 C! B6 P4 w! i
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. S9 ^7 s3 ?9 p0 f Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: H) }- ]$ U S+ y GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 `9 B# w1 a( O* @% h2 m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3. ^/ K0 t2 [! {4 K
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% O8 K! b( Y7 g* R4 l4 i4 {}) j( A3 @9 R) W+ y7 ^
3 o1 {& g$ ~: V3 c) C5 Q; m) b
int main(void)* _. n. C, p+ d4 D3 X
{
+ k0 q' D1 v" t- T2 D // 外设使能
4 Z8 ?2 f9 i8 a1 l" T! a PSCInit();
% L7 @- x+ Q8 U" F
6 Z- |$ C, M6 S+ [" d/ A" z; V4 E + H% l; ^2 f) n$ t; D7 N
// 管脚复用配置
5 C. A- X5 C0 p9 [ GPIOBankPinMuxSet();& c$ `5 H9 L9 n+ x* a
for(;;)( P( ^* `8 u# U
{' A" h# V/ G, g5 p6 Q, u a4 I
SET_SCLK();//时钟正常输出
4 L3 d o! b9 _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; r+ J9 b6 |5 C! S* N3 E# a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 Q- A) ?' e# {2 M9 ]3 U) `8 e7 o4 ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 S( c5 F% [( ^, r, _4 J1 z
7 X! Q1 [0 U2 l D% u delay(20);
/ c, p- H. J* `; M CLR_SCLK();1 h: g! o) Y6 Y. @$ }
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 X0 z5 q$ p/ v" L' S- u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
; |6 j3 t+ ^6 W) B$ c GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& v/ U1 Z; T' R# f+ d$ M. }
delay(20);( n# `& l, j& c. v' {4 M- ^
}
* T) s9 h& o" K}. v3 X( q; ]( ^' i, y2 H- n# a) Z
|
|